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("Назначение было успешно добавлено.")))); }
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("Запись на прием была успешно сохранена.")))); }
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("Данные успешно обновлены")))); }
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 родителя было отправлено письмо с данными для авторизации.")))); }