예제 #1
0
        public async Task Handle(OrderCreatedIntegrationEvent @event)
        {
            _logger.LogDebug($"Handling the `Order Created` event from Order service");

            var orderId = @event.Id.ToString("N");


            MimeMessage _message = new MimeMessage();

            _message.To.Add(new MailboxAddress(_mailOptions.MailTo));
            _message.From.Add(new MailboxAddress(_mailSettings.Email));
            _message.Subject = "ORDER CREATED:: " + orderId;
            _message.Body    = new TextPart(TextFormat.Html)
            {
                Text = "ORDER CREATED:: " + orderId
            };


            await _emailService.SendAsync(_message);


            await Task.FromResult(false);
        }
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (await _userService.Exists(model.Email))
                {
                    var user = await _userService.Register(model);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account",
                                                 new { userId = user.Id, code = user.Code },
                                                 protocol: HttpContext.Request.Scheme);

                    await _eMailService.SendAsync(user.Email, $"Подтвердите электронный адрес",
                                                  $"<h3>Web-приложение \"Электронный журнал\"</h3><br/>" +
                                                  $"Подтвердите регистрацию, перейдя по ссылке: <a href='{callbackUrl}'>ссылка</a><br/>" +
                                                  $"<h4>Автор - Чаевский Андрей</h4>");

                    return(Content("Для завершения регистрации проверьте электронную почту и перейдите по ссылке, указанной в письме"));
                }
                else
                {
                    ModelState.AddModelError("", "Некорректные логин и(или) пароль");
                }
            }
            foreach (var errorValue in ModelState.Keys)
            {
                if (ModelState[errorValue].Errors.Count != 0)
                {
                    foreach (var error in ModelState[errorValue].Errors.ToList())
                    {
                        ModelState.AddModelError(errorValue, error.ErrorMessage);
                    }
                }
            }
            ViewBag.Groups = _groupService.GetGroups();
            return(View(model));
        }
예제 #3
0
        public async Task <ObjectResult> SaveAbsence(List <bool> isPresent, int calendarSheduleTimeSpendingId, string baseUrl)
        {
            var userGroup = _userService.GetCurrentUserGroup();
            var calendarSheduleTimeSpending = _eJContext.CalendarSheduleTimeSpendings.Find(calendarSheduleTimeSpendingId);
            var usersInGroup = _userService.GetCurrentUserAllGroup()
                               .Select(x => new { x.Id, x.Email, x.GroupId }).ToList();
            var calendarSheduleTimeSpendings = _eJContext.CalendarSheduleTimeSpendings.Where(x =>
                                                                                             x.SheduleTimeSpending.TimeSpending.Number ==
                                                                                             calendarSheduleTimeSpending.SheduleTimeSpending.TimeSpending.Number &&
                                                                                             x.Calendar.Date ==
                                                                                             calendarSheduleTimeSpending.Calendar.Date &&
                                                                                             x.SheduleTimeSpending.SheduleSubject.GroupShedule.Group.Number ==
                                                                                             userGroup.Number &&
                                                                                             x.SheduleTimeSpending.SheduleSubject.GroupShedule.Group.CourseId ==
                                                                                             userGroup.CourseId);

            var absenceAllGroup = _eJContext.Absences.Where(x => calendarSheduleTimeSpendings.Select(y => y.Id)
                                                            .Contains(x.CalendarSheduleTimeSpendingId)).ToList();

            if (absenceAllGroup.Count != 0)
            {
                for (int i = 0; i < absenceAllGroup.Count(); i++)
                {
                    var indexOfUser = usersInGroup.Select(x => x.Id).ToList().IndexOf(absenceAllGroup[i].User.Id);
                    if (indexOfUser != -1)
                    {
                        var currentCalendarSheduleTimeSpending = calendarSheduleTimeSpendings.FirstOrDefault(x =>
                                                                                                             x.SheduleTimeSpending.SheduleSubject.GroupShedule.GroupId == usersInGroup[indexOfUser].GroupId);
                        var classType   = currentCalendarSheduleTimeSpending.SheduleTimeSpending.ClassType.Name;
                        var subjectName = currentCalendarSheduleTimeSpending.SheduleTimeSpending.SheduleSubject.Subject.Name
                                          ?? currentCalendarSheduleTimeSpending.SheduleTimeSpending.SheduleSubject.Subject.ShortName;
                        if (!isPresent[indexOfUser])
                        {
                            var eMailSendingResult = await _eMailService.SendAsync(absenceAllGroup[i].User.Email,
                                                                                   $"Уведомление о пропуске занятия",
                                                                                   $"<a href='{baseUrl}'><h3>Web-приложение \"Электронный журнал\"</h3></a><br/>" +
                                                                                   $"Произошла ошибка - была неправильная отметка о Вашем пропуске занятия.<br />" +
                                                                                   $"Эта ошибка была исправлена. " +
                                                                                   $"Вы присутствовали на занятии {calendarSheduleTimeSpending.Calendar.Date.ToShortDateString()}<br />" +
                                                                                   $"{classType}<br/>{subjectName}" +
                                                                                   $"<h4>Автор - Чаевский Андрей</h4>");

                            if (eMailSendingResult)
                            {
                                _eJContext.Absences.Remove(absenceAllGroup[i]);
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < usersInGroup.Count(); i++)
            {
                if (isPresent[i] && absenceAllGroup.Select(x => x.UserId).ToList()
                    .IndexOf(usersInGroup[i].Id) == -1)
                {
                    var currentCalendarSheduleTimeSpending = calendarSheduleTimeSpendings.FirstOrDefault(x =>
                                                                                                         x.SheduleTimeSpending.SheduleSubject.GroupShedule.GroupId == usersInGroup[i].GroupId);
                    var classType   = currentCalendarSheduleTimeSpending.SheduleTimeSpending.ClassType.Name;
                    var subjectName = currentCalendarSheduleTimeSpending.SheduleTimeSpending.SheduleSubject.Subject.Name
                                      ?? currentCalendarSheduleTimeSpending.SheduleTimeSpending.SheduleSubject.Subject.ShortName;

                    var eMailSendingResult = await _eMailService.SendAsync(usersInGroup[i].Email,
                                                                           $"Уведомление о пропуске занятия",
                                                                           $"<a href='{baseUrl}'><h3>Web-приложение \"Электронный журнал\"</h3></a><br/>" +
                                                                           $@"Вы отсутствовали на занятии {calendarSheduleTimeSpending.Calendar.Date
                            .ToShortDateString()}<br />" +
                                                                           $"{classType}<br/>{subjectName}" +
                                                                           $"<h4>Автор - Чаевский Андрей</h4>");

                    if (eMailSendingResult)
                    {
                        var absenceInRepository = _eJContext.Absences.Add(new Absence
                        {
                            UserId = usersInGroup[i].Id,
                            CalendarSheduleTimeSpendingId = currentCalendarSheduleTimeSpending.Id
                        });
                        _eJContext.AbsenceNotifications.Add(new AbsenceNotification
                        {
                            AbsenceId = absenceInRepository.Entity.Id,
                            SendDate  = DateTime.Now
                        });
                    }
                }
            }
            _eJContext.SaveChanges();

            return(await Task.Run(() =>
            {
                return new OkObjectResult(true);
            }));
        }