コード例 #1
0
ファイル: SubmitFormController.cs プロジェクト: dsalodki/call
        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);
        }
コード例 #2
0
        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("Не верные данные"));
        }
コード例 #3
0
        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
                    }
                }
            }