예제 #1
0
        // Insere um checkout + calcula preço creckout -> preço dos itens consumidos + diaria do quarto pelos dias
        public Response Insert(CheckOut checkOut)
        {
            Response response = Validate(checkOut);

            if (response.Success)
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    CheckInBLL checkInBLL = new CheckInBLL();
                    SingleResponse <CheckIn> responseCheckIn = checkInBLL.GetById(checkOut.CheckInID);
                    if (responseCheckIn.Success)
                    {
                        QuartoBLL quartoBLL = new QuartoBLL();
                        SingleResponse <Quarto> responseQuarto = quartoBLL.GetById(checkOut.QuartoID);
                        if (responseQuarto.Success)
                        {
                            Itens_ConsumidosBLL itensConsumidosBLL         = new Itens_ConsumidosBLL();
                            QueryResponse <Itens_Consumidos> responseItens = itensConsumidosBLL.GetItensConsumidosByCliente(checkOut.ClienteID);


                            foreach (Itens_Consumidos item in responseItens.Data)
                            {
                                vendaProdutoDAL.PagarItem(checkOut.ClienteID, item.VendaID, item.ProdutoID, item.Valor);
                            }

                            checkOut.Valor  = responseItens.Data.Sum(c => checkOut.Valor + c.ValorTotal);
                            checkOut.Valor += (responseQuarto.Data.ValorNoite / 24) * Extensions.StringExtensions.SubtraiDatas(responseCheckIn.Data.DataEntrada, checkOut.DataSaida);
                        }
                    }
                    scope.Complete();
                    return(checkOutDAL.Insert(checkOut));
                }
            }
            return(response);
        }