public IHttpActionResult Post([FromBody] SubmitFormModel model) { if (ModelState.IsValid) { int tenantId; if (!int.TryParse(model.TenantId, out tenantId)) { return(BadRequest("Обратитесь в поддержку, не верный провайдер")); } if (_tenantManager.Tenants.ToList().All(x => x.Id != tenantId)) { return(BadRequest("Обратитесь в поддержку, не верный провайдер")); } var isLast15min = _requestRepository.GetAllList() .Any( x => x.TenantId == tenantId && x.Phone == model.Phone && x.Created.AddMinutes(15) > DateTime.UtcNow); //if (isLast15min) // return BadRequest("нельзя отправить более одного запроса в 15 минут"); var requestInput = new CreateRequestInput { Phone = model.Phone, Created = DateTime.UtcNow, Email = model.Email, Name = model.Name, State = State.NotAnswered, Question = model.Question, TenantId = tenantId }; var requestId = _requestAppService.CreateRequest(requestInput); ThreadPool.QueueUserWorkItem((object state) => { var request = requestInput.MapTo <Request>(); request.Id = requestId; foreach (var client in RequestHub.Users[request.TenantId].Values) { client.notifyAboutRequest(request); } }); if (!string.IsNullOrEmpty(model.Email)) { MailMessage mail = new MailMessage("*****@*****.**", model.Email); SmtpClient client = new SmtpClient("smtp-relay.gmail.com", 587) { EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential("*****@*****.**", "Today123!") }; mail.Subject = "запрос поступил"; mail.Body = string.Format($"Ваш запрос сохранен в базе данных и будет обработан оператором через некоторое время. Телефон № {model.Phone}. Комментарий к вопросу: {model.Question}"); client.Send(mail); } return(Ok("Запрос успешно принят")); } return(BadRequest("Не верные данные")); }
public long CreateRequest(CreateRequestInput input) { var request = input.MapTo <Request>(); return(_requestRepository.InsertAndGetId(request)); }