public async Task <IActionResult> NewOrderNoCustomer([FromBody] OrderNoCustomerView orderView) { try { if (!ModelState.IsValid) { return(CustomResponse(ModelState)); } await _orderRepository.Save(orderView); } catch (Exception ex) { NotifyError(ex.Message); } return(CustomResponse()); }
private async Task Validation(OrderNoCustomerView order) { if (!_baseService.ViewValidation(new OrderValidation(), order)) { return; } var customers = await _customerRepository.Query <Customer>("Select * from Customer nolock where email =@email", new { email = order.Email }); if (customers.Any()) { _customer = customers.FirstOrDefault(); } var selectFlavors = order.Items.Select(src => src.Flavors); await PrepareFlavors(selectFlavors); }
public async Task Save(OrderNoCustomerView orderView) { try { await Validation(orderView); if (_notifier.HasNotification()) { return; } _context.Begin(); //Create customer if (_customer == null) { var customer = _mapper.Map <Customer>(orderView); await _customerRepository.Insert(customer); _customer = customer; } else { // The customer exists, but the delivery can be in another location var id = _customer.Id; var name = _customer.Name; _customer = _mapper.Map <Customer>(orderView); _customer.UpdateId(id); _customer.Name = name; } await Save(orderView.DateCreate, orderView.Items); _context.Commit(); } catch (Exception ex) { _context.Rollback(); _notifier.SetNotification(new Notification("Não foi possível salvar esse registro, veja o erro:" + ex.Message)); } }
public async Task CreateOrderNoCustomer() { var entry = new OrderNoCustomerView { DateCreate = DateTime.Now, Name = "Ingrid Guimarães Martins Leandro", Email = "*****@*****.**", Street = "Rua Jurupira", Number = "724", Complement = "", Neighborhood = "Barra Funda", City = "São Paulo", PostalCode = "02714-000", UF = "SP", Items = new List <OrderItemView>() }; entry.Items.Add(new OrderItemView { Flavors = new List <long> { 3 }, }); entry.Items.Add(new OrderItemView { Flavors = new List <long> { 1, 2 }, }); var payload = System.Text.Json.JsonSerializer.Serialize(entry); var client = new SaleProvider()._client; var response = await client.PostAsync("/api/v1/Order/new/no/customer", new StringContent(payload, Encoding.UTF8, "application/json")); response.EnsureSuccessStatusCode(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }