public async Task <ActionResult <MessageResponseModel> > Post([FromBody] Prescription prescription)
        {
            prescription.DateTime = DateTime.Now;
            _context.Prescriptions.Add(prescription);
            await _context.SaveChangesAsync();

            var ticket = _context.Tickets
                         .Include(x => x.Child)
                         .ThenInclude(x => x.Parent)
                         .FirstOrDefault(x => x.Id == prescription.TicketId);

            var parent = ticket.Child.Parent;

            try
            {
                var emailSubject = "Врач выписал вам назначение";
                var emailBody    = $"Здравствуйте, {parent.FirstName} {parent.Patronim}!";
                emailBody += "\n\nВрач выписал вам назначение в системе ChildVac.";
                emailBody += $"\nДиагноз: {prescription.Diagnosis}";
                emailBody += $"\nЛечение: {prescription.Medication}";
                emailBody += $"\nПримечания: {prescription.Description}";
                emailBody += "\n\n С уваженим, администрация ChildVac";
                SmtpServiceHelper.SendMail(parent.Email, emailSubject, emailBody);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to send email");
            }

            return(CreatedAtAction(nameof(GetById), new { id = prescription.Id },
                                   new MessageResponseModel(true,
                                                            new MessageModel("Назначение было успешно добавлено."))));
        }
示例#2
0
        public async Task <ActionResult <MessageResponseModel> > Post([FromBody] Ticket ticket)
        {
            try
            {
                if (ticket.StartDateTime < DateTime.Now)
                {
                    return(BadRequest(new MessageResponseModel(false,
                                                               new MessageModel("Время приема должно быть позже настоящего времени.",
                                                                                "Укажите корректное значение"))));
                }

                var iin  = User?.Identity?.Name;
                var user = AccountHelper.GetUserByIin(_context, iin);
                ticket.DoctorId = user.Id;
                ticket.Status   = TicketStatus.Waiting;

                _context.Tickets.Add(ticket);
                await _context.SaveChangesAsync();

                try
                {
                    var childId = ticket.ChildId;
                    var child   = _context.Children
                                  .Include(x => x.Parent)
                                  .FirstOrDefault(x => x.Id == childId);

                    var parent = child?.Parent;

                    if (parent != null)
                    {
                        var emailSubject = "Назначен прием к врачу";
                        var emailBody    = $"Здравствуйте, {parent.FirstName} {parent.Patronim}!";
                        emailBody += $"\n\nВашему ребенку была назначена "
                                     + (ticket.TicketType == TicketType.Consultation ? "консультация" : "вакцинация")
                                     + " в системе ChildVac.";
                        emailBody += $"\nВремя: {ticket.StartDateTime.ToString("dd.MM.yyyy HH:mm")}";
                        emailBody += $"\nКабинет: {ticket.Room}";
                        emailBody += "\n\n С уваженим, администрация ChildVac";
                        SmtpServiceHelper.SendMail(parent.Email, emailSubject, emailBody);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Failed to send email");
                }
            }
            catch (Exception)
            {
                return(StatusCode(500, new MessageResponseModel(false,
                                                                new MessageModel("Извините, произошла ошибка.",
                                                                                 "Попробуйте снова чуть позже."))));
            }

            return(CreatedAtAction(nameof(GetById), new { id = ticket.Id },
                                   new MessageResponseModel(true,
                                                            new MessageModel("Запись на прием была успешно сохранена."))));
        }
示例#3
0
        public async Task <ActionResult <MessageResponseModel> > Put(int id, [FromBody] Ticket ticket)
        {
            try
            {
                if (ticket == null)
                {
                    return(NotFound());
                }

                ticket.Status = TicketStatus.Waiting;
                _context.Tickets.Update(ticket);
                await _context.SaveChangesAsync();

                try
                {
                    var childId = ticket.ChildId;
                    var child   = _context.Children
                                  .Include(x => x.Parent)
                                  .FirstOrDefault(x => x.Id == childId);

                    var parent = child?.Parent;

                    if (parent != null)
                    {
                        var emailSubject = "Изменения в записи к врачу";
                        var emailBody    = $"Здравствуйте, {parent.FirstName} {parent.Patronim}!";
                        emailBody += "\n\n"
                                     + (ticket.TicketType == TicketType.Consultation ? "Консультация" : "Вакцинация")
                                     + ", назначенная вам раннее в системе ChildVac была изменена врачем.";
                        emailBody += $"\nВремя: {ticket.StartDateTime:dd.MM.yyyy HH:mm}";
                        emailBody += $"\nКабинет: {ticket.Room}";
                        emailBody += "\n\n С уваженим, администрация ChildVac";
                        SmtpServiceHelper.SendMail(parent.Email, emailSubject, emailBody);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Failed to send email");
                }
            }
            catch (Exception e)
            {
                return(StatusCode(500, new MessageResponseModel(false,
                                                                new MessageModel("Извините, произошла ошибка.",
                                                                                 "Попробуйте снова чуть позже."))));
            }

            return(Ok(new MessageResponseModel(true,
                                               new MessageModel("Данные успешно обновлены"))));
        }
示例#4
0
        public async Task <ActionResult <MessageResponseModel> > Post([FromBody] Parent parent)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode(500, new MessageResponseModel(false,
                                                                new MessageModel("Извините, произошла ошибка.",
                                                                                 "Попробуйте снова чуть позже."))));
            }

            var user = await _context.Users.FirstOrDefaultAsync(x => x.Iin.Equals(parent.Iin));

            if (user != null)
            {
                return(BadRequest(new MessageResponseModel(false,
                                                           new MessageModel("Пользователь с данным ИИН уже зарегистрирован.",
                                                                            "Проверьте правильность данных и попробуйте снова."))));
            }

            parent.Password = AccountHelper.GenerateRandomPassword();
            parent.Role     = _context.Roles.FirstOrDefault(
                x => x.Name.Equals("Parent",
                                   StringComparison.InvariantCultureIgnoreCase));

            _context.Parents.Add(parent);
            await _context.SaveChangesAsync();

            try
            {
                var emailSubject = "Регистрация в системе ChildVac";
                var emailBody    = $"Здравствуйте, {parent.FirstName} {parent.Patronim}!";
                emailBody += "\n\nВы были зарегистрированы в системе ChildVac.";
                emailBody += "\nИспользуйте указанные ниже данные для входа:";
                emailBody += $"\nЛогин: {parent.Iin}";
                emailBody += $"\nПароль: {parent.Password}";
                emailBody += "\n\n С уваженим, администрация ChildVac";
                SmtpServiceHelper.SendMail(parent.Email, emailSubject, emailBody);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Failed to send email");
            }

            return(CreatedAtAction(nameof(GetById), new { id = parent.Id },
                                   new MessageResponseModel(true,
                                                            new MessageModel("Регистрация прошла успешно!",
                                                                             "На Email родителя было отправлено письмо с данными для авторизации."))));
        }