Conversation
| .UseSqlServerStorage(Configuration.GetConnectionString("HangfireConnection"))); | ||
|
|
||
| // Add the processing server as IHostedService | ||
| services.AddHangfireServer(); |
There was a problem hiding this comment.
у hangfire клиент - серверная архитектура, где сервер и клиент общаются с общей бд
сервер нужно добавить, чтобы он брал задачи из бд и выполнял их время от времени
| using HwProj.Repositories; | ||
|
|
||
|
|
||
| namespace HwProj.NotificationsService.API.Repositories; |
There was a problem hiding this comment.
namespace надо сделать block-scoped
| public sealed class NotificationsContext : DbContext | ||
| { | ||
| public DbSet<Notification> Notifications { get; set; } | ||
| public DbSet<ScheduleWork> ScheduleWorks { get; set; } |
There was a problem hiding this comment.
| public DbSet<ScheduleWork> ScheduleWorks { get; set; } | |
| public DbSet<ScheduleJob> ScheduleJobs { get; set; } |
| namespace HwProj.Repositories | ||
| { | ||
| public interface IEntity<TKey> | ||
| public interface IEntity<TKey> |
| { | ||
| public class UpdateTaskEvent : Event | ||
| { | ||
| public CourseDTO Course { get; set; } |
There was a problem hiding this comment.
можем ли мы из курса взять только необходимые данные?
| public string TaskTitle { get; set; } | ||
|
|
||
| public long TaskId { get; set; } | ||
|
|
||
| //закладываюсь, что дату публикации не будут менять после публикации | ||
| public DateTime PreviousPublicationDate { get; set; } | ||
|
|
||
| public DateTime PublicationDate { get; set; } | ||
|
|
||
| public DateTime? Deadline { get; set; } |
There was a problem hiding this comment.
Возможно, мы хотим старую задачу и новую задачу, а не набор отдельных полей?
|
|
||
| namespace HwProj.Models.NotificationsService | ||
| { | ||
| public class ScheduleWork : IEntity<string> |
There was a problem hiding this comment.
| public class ScheduleWork : IEntity<string> | |
| public class ScheduleJob : IEntity<string> |
|
|
||
| public override async Task HandleAsync(DeleteTaskEvent @event) | ||
| { | ||
| var id = ScheduleWorkIdBuilder.Build(@event, @event.TaskId); |
There was a problem hiding this comment.
По эвенту удаления не должны создаваться ключи других эвентов, тем более, что отменяемых эвентов может быть несколько
| { | ||
| _ when eventType == typeof(NewTaskEvent) || eventType == typeof(UpdateTaskEvent) || | ||
| eventType == typeof(DeleteTaskEvent) | ||
| => "Task", |
There was a problem hiding this comment.
для дедлайнов и публикаций ключи должны отличаться
feat: new task delayed notification
feat: create ScheduleEventHandler + UpdateScheduleEventHandler abstract classes feat: Create ScheduleWorksRepository feat: Add schedule homework task
fix: schedule works not implement IRepository interfaces fix: change ScheduleWork primary key
76fd0e2 to
ac1eaa0
Compare
Transferring CourseDataFilter
| var userId = context.HttpContext.User.Claims | ||
| .FirstOrDefault(claim => claim.Type.ToString() == "_id") | ||
| ?.Value;; |
There was a problem hiding this comment.
| var userId = context.HttpContext.User.Claims | |
| .FirstOrDefault(claim => claim.Type.ToString() == "_id") | |
| ?.Value;; | |
| var userId = context.HttpContext.User.FindFirst("_id"); |
| Homeworks, | ||
| Tasks |
There was a problem hiding this comment.
Думаю, нам не нужно это изменение
| var course = await _coursesServiceClient.GetCourseById(@event.Course.Id); | ||
| if (course == null) return; | ||
|
|
||
| var studentIds = course.CourseMates.Select(t => t.StudentId).ToArray(); |
There was a problem hiding this comment.
| var studentIds = course.CourseMates.Select(t => t.StudentId).ToArray(); | |
| var studentIds = course.AcceptedStudents.Select(t => t.StudentId).ToArray(); |
| await EventHandlerExtensions<NewTaskEvent>.DeleteScheduleJobAsync(@event, @event.TaskId, | ||
| _scheduleJobsRepository); |
There was a problem hiding this comment.
Давай будем удалять джобу только тогда, когда её создаем: вынесем этот код из AddNotificationsAsync
There was a problem hiding this comment.
Также нужно удалять джобы просто из репозитория
| var accountsData = await _authServiceClient.GetAccountsData(studentIds); | ||
|
|
||
| var url = _configuration["Url"]; | ||
| var isTaskPublished = @event.PreviousEvent.PublicationDate < DateTimeUtils.GetMoscowNow(); |
There was a problem hiding this comment.
если задача опубликована, мы можем использовать логику из NewHomeworkTaskEventHandler
| var predicate = (ScheduleJob scheduleJob) => | ||
| { | ||
| var id = ScheduleJobIdHelper.ParseId(scheduleJob.Id); | ||
| return id.CategoryId == categoryId && id.Category.Equals(category); | ||
| }; |
There was a problem hiding this comment.
Этот код не транслируется в SQL. Нужно или делать фильтрацию по объектному ключу и его полям, или составлять список всех буквальных ключей, и искать записи в бд по ним
No description provided.