public async Task <IActionResult> CreateOrder(CreateOrderViewModel viewModel) { var currentReceptionistId = User .FindFirstValue(ClaimTypes.NameIdentifier); var order = this.mapper.Map <InsertOrderServiceModel>(viewModel); order.ReceptionistId = int.Parse(currentReceptionistId); try { var createdOrderData = await this.orderService.InsertOrderAsync(order); var createdOrderViewModel = new CreatedOrderViewModel() { OrderNumber = createdOrderData.OrderNumber, OrderPassword = createdOrderData.OrderPassword, OrderPrice = createdOrderData.OrderPrice }; return(View("CreatedOrder", createdOrderViewModel)); } catch (Exception) { this.ViewBag.ErrorMessage = "An error occurred please try again later"; viewModel = await InitializeCreateOrderViewModelAsync(); return(View(viewModel)); } }
public async Task <IActionResult> Create([FromBody] CreatedOrderViewModel model) { if (model.ServiceId == "0" && model.Description == "" && model.ClientAnswers.Count(x => x.Answer == "") == 0 && model.AnswerIds.Count == 0 || model.SalaryMin == "") { return(Json("error data")); } var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var client = await _clientService.FindAsync(userId); var order = new Order { Created = DateTime.Now, State = OrderStateTypeEnum.InSearchOfSpec, ClientLocation = model.ClientLocation, Client = client, ServiceId = int.Parse(model.ServiceId), Description = model.Description }; if (!string.IsNullOrEmpty(model.SalaryMin) && int.TryParse(model.SalaryMin, out var min)) { order.PriceMin = min; } else { order.PriceMin = 0; } if (!string.IsNullOrEmpty(model.SalaryMax) && int.TryParse(model.SalaryMax, out var max)) { order.PriceMax = max; } var result = await _orderService.InsertAsync(order); if (model.OrderMeetingPoints.Any()) { await _orderService.AddMeetingPoints(model.OrderMeetingPoints.Select(x => new OrderMeetingPoint { OrderId = order.Id, MeetingPointId = int.Parse(x) })); } if (model.ClientAnswers.Any(x => x.Answer != "")) { await _answerService.AddInputAnswers(model.ClientAnswers.Where(x => x.Answer != "").Select(x => new ClientAnswer { Text = x.Answer, OrderId = order.Id, QuestionId = x.QuestionId })); } if (model.AnswerIds.Any()) { await _answerService.AddAnswersToOrders(model.AnswerIds.Select(int.Parse).ToArray(), order.Id); } await _hubContext.Clients.All.SendAsync("NewOrder", order.Id); return(Json(order.Id)); }