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);
            }
        }
示例#2
0
        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);
        }