Example #1
0
        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;
            }
        }
Example #2
0
        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));
            }
        }