public async Task NewServiceOrder(InputServiceOrderDto serviceOrderDto) { try { var session = await _ravenDatabaseProvider.GetSession(); var paymentMethod = SystemConstants.ListPaymentMethods().FirstOrDefault(wh => wh.SysId == serviceOrderDto.PaymentMethodSysId); if (paymentMethod == null) { throw new InvalidEnumArgumentException("Não foi encontrado um meio de pagamento válido"); } var customer = await _ravenDatabaseProvider.GetEntity <Customer>(serviceOrderDto.CustomerId); if (customer == null) { throw new InvalidEnumArgumentException("Não foi encontrado um cliente com o ID informado"); } var bill = new Bill( paymentMethod, serviceOrderDto.Value, SystemConstants.BillDestinyReceive, SystemConstants.BillStatus_EmAberto, serviceOrderDto.DueDate, serviceOrderDto.Description ); await session.StoreAsync(bill); ServiceOrder serviceOrder = new ServiceOrder(DateTime.Now, serviceOrderDto.Description, customer, bill); await session.StoreAsync(serviceOrder); //await _ravenDatabaseProvider.CommitAsync(session); await session.SaveChangesAsync(); session.Dispose(); bill.SetServiceOrderId(serviceOrder.Id); await _ravenDatabaseProvider.UpdateEntity <Bill>(bill.Id, bill); } catch (System.Exception ex) { throw ex; } }
public async Task <IActionResult> New([FromBody] InputServiceOrderDto serviceOrderDto) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } await _serviceOrderProvider.NewServiceOrder(serviceOrderDto); return(Ok()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }