Ejemplo n.º 1
0
        public async Task <SaleDto> GetOne(Guid id)
        {
            var sale = await _saleRepository.GetById(id, x => x.Include(s => s.Client).Include(s => s.Payment).Include(s => s.Details).ThenInclude(d => d.Product));

            if (sale == null)
            {
                throw new KeyNotFoundException($"Sale with id: {id} not found.");
            }

            sale.Details = sale.Details.Where(x => !x.IsDeleted).ToList();

            var saleDto = _mapper.Map <Sale, SaleDto>(sale);

            var payment = sale.Payment;

            switch (saleDto.PaymentType)
            {
            case Util.Enums.ePaymentTypes.Cash:
                saleDto.Cash = _mapper.Map <Cash, CashDto>((Cash)payment);
                break;

            case Util.Enums.ePaymentTypes.OwnFees:
                OwnFees owF = (OwnFees)payment;
                owF.FeeList     = (await _feeRepository.GetAll()).Where(x => x.OwnFeesId == owF.Id).OrderBy(x => x.ExpirationDate).ToList();
                saleDto.OwnFees = _mapper.Map <OwnFees, OwnFeesDto>(owF);
                break;

            case Util.Enums.ePaymentTypes.CreditCard:
                saleDto.CreditCard = _mapper.Map <CreditCard, CreditCardDto>((CreditCard)payment);
                break;

            case Util.Enums.ePaymentTypes.DebitCard:
                saleDto.DebitCard = _mapper.Map <DebitCard, DebitCardDto>((DebitCard)payment);
                break;

            case Util.Enums.ePaymentTypes.Cheques:
                saleDto.Cheques = _mapper.Map <ChequesPayment, ChequesPaymentDto>((ChequesPayment)payment);
                saleDto.Cheques.ListOfCheques =
                    _mapper.Map <IEnumerable <Cheque>, IEnumerable <ChequeDto> >(
                        (await _chequeRepository.GetAll()).Where(x => x.ChequesPaymentId == saleDto.Cheques.Id)
                        ).ToList();
                break;

            default:
                break;
            }

            return(saleDto);
        }