示例#1
0
        public async Task <IActionResult> CreateRequest([FromForm] CreateRequestInput input)
        {
            Result <string> result = await _requestManager.CreateRequest(input);

            if (result.Success)
            {
                return(Ok(result));
            }
            else
            {
                return(BadRequest(result));
            }
        }
示例#2
0
        public async Task <Result <string> > CreateRequest(CreateRequestInput input)
        {
            Request request = new Request()
            {
                AdditionalRequests = input.AdditionalRequests,
                Date          = input.Date,
                EventType     = input.EventType,
                Location      = input.Location,
                UserId        = input.UserId,
                Time          = input.Time,
                FirstName     = input.FirstName,
                LastName      = input.LastName,
                RequestStatus = RequestStatus.OnHold
            };

            return(new Result <string>()
            {
                Success = true,
                Data = await _requestRepository.CreateAsync(request)
            });
        }
示例#3
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("Не верные данные"));
        }
示例#4
0
        public long CreateRequest(CreateRequestInput input)
        {
            var request = input.MapTo <Request>();

            return(_requestRepository.InsertAndGetId(request));
        }