public async Task Consume(ConsumeContext <ICurriculumRemovedRequest> context) { _logger.LogInformation("process removing curriculum {0} to user {1}", context.Message.CurriculumId, context.Message.UserId); var sc = await _studentCurriculumService.GetAsync(x => x.Curriculum.Id == context.Message.CurriculumId && x.Student.Id == context.Message.StudentId); var semesterStatus = await _studentCurriculumGrpcService.GetSemesterStatusAsync(context.Message.CurriculumId, context.Message.StudentId); if (!semesterStatus.CanTakeCurriculums) { await _hubContext.Clients.User(context.Message.UserId) .PrivateMessage("Time of adding/removing curriculums is over."); return; } if (!semesterStatus.IsCurriculumSemesterValid) { await _hubContext.Clients.User(context.Message.UserId) .PrivateMessage("You can't remove curriculums from previous semesters"); return; } if (sc != null) { int id = sc.Id; int curriculumId = sc.Curriculum.Id; await _studentCurriculumService.RemoveAsync(sc); await _hubContext.Clients.User(sc.Student.UserId).StudentCurriculumRemoved(id); await context.Publish <ICurriculumRemovedResponse>(new CurriculumRemovedResponse { CurriculumId = curriculumId }); await _hubContext.Clients.User(context.Message.UserId) .PrivateMessage($"You successfully removed curriculum {context.Message.CurriculumId}"); _logger.LogInformation("user {0} successfully added curriculum {1}", context.Message.CurriculumId); } }
public async Task Consume(ConsumeContext <ICurriculumAddedResponse> context) { _logger.LogInformation("Adding curriculum {0} to student {1}", context.Message.CurriculumResponse.Id, context.Message.StudentResponse.UserId); var isAlreadyExists = await _studentCurriculumService.GetAsync(x => x.Student.UserId == context.Message.StudentResponse.UserId && x.Curriculum.Id == context.Message.CurriculumResponse.Id && x.Status == StudentCurriculumStatus.Accepted); if (isAlreadyExists != null) { _logger.LogInformation("user {0} is already added curriculum {1}", context.Message.StudentResponse.UserId, context.Message.CurriculumResponse.Id); await _hubContext.Clients.User(context.Message.StudentResponse.UserId) .PrivateMessage($"You've already added curriculum {context.Message.CurriculumResponse.Id}"); return; } var studentCurriculum = new StudentCurriculum { Curriculum = context.Message.CurriculumResponse.MapTo <Data.Models.Curriculum>(), Status = (Data.Models.StudentCurriculumStatus)context.Message.Status, Student = context.Message.StudentResponse.MapTo <Student>(), StatusDescription = context.Message.StatusDescription }; await _studentCurriculumService.AddAsync(studentCurriculum); await _hubContext.Clients.User(context.Message.StudentResponse.UserId) .StudentCurriculumAdded(studentCurriculum.Id, studentCurriculum.Status, studentCurriculum.StatusDescription); await _hubContext.Clients.User(context.Message.StudentResponse.UserId) .PrivateMessage($"You successfully added curriculum {context.Message.CurriculumResponse.Id}"); _logger.LogInformation("user {0} is successfully added curriculum {1}", context.Message.StudentResponse.UserId, context.Message.CurriculumResponse.Id); }