public bool Post([FromBody] SubmitFormModel model) { if (ModelState.IsValid) { //todo validate call time (one per x minutes) var connStr = ConfigurationManager.ConnectionStrings["Default"].ConnectionString; using (var conn = new SqlConnection(connStr)) { using (var cmd = new SqlCommand("", conn)) { //looking for provider //save in db } } return(true); } return(false); }
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 async Task <Tuple <bool, long> > SubmitFunction(SubmitFormModel submit, User author) { if (submit.Title != null) { if (author is null) { author = await _context.Users.FindAsync(GetUserEmail(User)); } if (submit.Url is null && submit.Text is null) //ASK { Ask ask = new Ask { Title = submit.Title, Author = author, Content = "", DateCreated = DateTime.Now }; await _context.AddAsync(ask); await _context.SaveChangesAsync(); //ask = await _context.Asks.FirstOrDefaultAsync(a => a.Title == submit.Title); return(new Tuple <bool, long>(true, ask.Id)); //Habría que redireccionar a la inspección de la contribución } else if (submit.Url is null) //ASK { Ask ask = new Ask { Title = submit.Title, Author = author, Content = submit.Text, DateCreated = DateTime.Now }; await _context.AddAsync(ask); await _context.SaveChangesAsync(); //ask = await _context.Asks.FirstOrDefaultAsync(a => a.Title == submit.Title); return(new Tuple <bool, long>(true, ask.Id)); //Habría que redireccionar a la inspección de la contribución } else if (submit.Url.Trim().StartsWith("http")) //URL { News url = await _context.News.FirstOrDefaultAsync(n => n.Content == submit.Url); if (url != null) { //Aquí habría que redireccionar a la función que se encargue de visualizar una noticia y sus comentarios return(new Tuple <bool, long>(false, url.Id)); } if (submit.Text is null) //URL { News news = new News { Title = submit.Title, Author = author, Content = submit.Url, DateCreated = DateTime.Now }; await _context.AddAsync(news); await _context.SaveChangesAsync(); //news = await _context.News.FirstOrDefaultAsync(a => a.Title == submit.Title); return(new Tuple <bool, long>(true, news.Id)); //Habría que redireccionar a la inspección de la contribución } else //URL + COMMENT { News news = new News { Title = submit.Title, Author = author, Content = submit.Url, DateCreated = DateTime.Now, Comments = new HashSet <Comment>() }; Comment com = new Comment { Author = author, Content = submit.Text, DateCreated = DateTime.Now, Commented = news }; news.Comments.Add(com); await _context.AddAsync(news); await _context.AddAsync(com); await _context.SaveChangesAsync(); //news = await _context.News.FirstOrDefaultAsync(a => a.Title == submit.Title); return(new Tuple <bool, long> (true, news.Id)); //Habría que redireccionar a la inspección de la contribución } } }