public async Task <SolicitudesConDetallesDto> ObtenerSolicitudConDetallePorId(int id)
        {
            var solicitud = (await EncontrarSolicitudes(t => t.Id == id)).FirstOrDefault();

            if (solicitud != default(Solicitudes))
            {
                var listaDetallesDto = new List <DetalleSolicitudDto>();
                var listaDetalles    = (await EncontrarDetallesSolicitudes(t => t.SolicitudesId == solicitud.Id)).ToList();

                foreach (var detalle in listaDetalles)
                {
                    var prendaClasificacion = (await _clasificacionPrendasAccesoBd.EncontrarPrendasClasificacion(t => t.Id == detalle.PrendasClasificacionId)).FirstOrDefault();

                    var prenda        = (await _clasificacionPrendasAccesoBd.EncontrarPrenda(t => t.Id == prendaClasificacion.PrendasId)).FirstOrDefault();
                    var clasificacion = (await _clasificacionPrendasAccesoBd.EncontrarClasificacion(t => t.Id == prendaClasificacion.ClasificacionId)).FirstOrDefault();

                    var detalleDto = new DetalleSolicitudDto
                    {
                        Id                     = detalle.Id,
                        Estado                 = detalle.Estado,
                        Doblado                = detalle.Doblado,
                        LavadoPlanchado        = detalle.LavadoPlanchado,
                        LavadoSeco             = detalle.LavadoSeco,
                        Planchado              = detalle.Planchado,
                        CantidadPrendas        = detalle.CantidadPrendas,
                        PrendasClasificacionId = detalle.PrendasClasificacionId,
                        SolicitudesId          = detalle.SolicitudesId,
                        Prenda                 = prenda.Nombre,
                        Clasificacion          = clasificacion.Nombre
                    };
                    listaDetallesDto.Add(detalleDto);
                }

                var listadoDetalles = new ListadoDetallesSolicitudDto
                {
                    DetalleSolicitud = listaDetallesDto
                };
                var cliente = await _clienteAccesoBd.ObtenerClientePorId(solicitud.ClienteId);

                var solicitudConDetalle = new SolicitudesConDetallesDto
                {
                    ClienteId                = solicitud.ClienteId,
                    Estado                   = solicitud.Estado,
                    Fecha                    = solicitud.Fecha,
                    Id                       = solicitud.Id,
                    SuplementoEntrega        = solicitud.SuplementoEntrega,
                    ListadoDetallesSolicitud = listadoDetalles,
                    Habitacion               = cliente.Habitacion,
                    Nombres                  = cliente.Nombres
                };
                return(solicitudConDetalle);
            }
            return(default(SolicitudesConDetallesDto));
        }
 public async Task <ClienteDto> ObtenerClientePorId(int id)
 {
     return(await _clientesAccesoBd.ObtenerClientePorId(id));
 }
        public async Task <FacturasConDetalleDto> ObtenerFacturaConDetallesPorId(int id)
        {
            var factura = (await EncontrarFactura(t => t.Id == id)).FirstOrDefault();

            if (factura != default(Factura))
            {
                var listaDetallesFacturaDto = new List <ObtenerDetalleFacturaDto>();
                var listaDetallesFactura    = (await EncontrarDetallesFactura(t => t.FacturaId == factura.Id)).ToList();

                var cliente = await _clientesAccesoBd.ObtenerClientePorId(factura.ClientesId);

                var solicitud = await _solicitudesAccesoBd.ObtenerSolicitudPorId(factura.SolicitudesId);

                foreach (var detalleFactura in listaDetallesFactura)
                {
                    var detalleSolicitud = await _solicitudesAccesoBd.ObtenerDetalleSolicitud(detalleFactura.DetalleSolicitudId);

                    var prendaClasificacion = (await _clasificacionPrendasAccesoBd.EncontrarPrendasClasificacion(t => t.Id == detalleSolicitud.PrendasClasificacionId)).FirstOrDefault();

                    var prenda        = (await _clasificacionPrendasAccesoBd.EncontrarPrenda(t => t.Id == prendaClasificacion.PrendasId)).FirstOrDefault();
                    var clasificacion = (await _clasificacionPrendasAccesoBd.EncontrarClasificacion(t => t.Id == prendaClasificacion.ClasificacionId)).FirstOrDefault();


                    var detalleFacturaDto = new ObtenerDetalleFacturaDto
                    {
                        Id = detalleFactura.Id,

                        Clasificacion = clasificacion.Nombre,
                        Prenda        = prenda.Nombre,

                        CantidadPrendasDetalle = detalleSolicitud.CantidadPrendas,
                        DobladoDetalle         = detalleSolicitud.Doblado,
                        EstadoDetalle          = detalleSolicitud.Estado,
                        LavadoPlanchadoDetalle = detalleSolicitud.LavadoPlanchado,
                        LavadoSecoDetalle      = detalleSolicitud.LavadoSeco,
                        PlanchadoDetalle       = detalleSolicitud.Planchado,

                        Doblado         = detalleFactura.Doblado,
                        LavadoPlanchado = detalleFactura.LavadoPlanchado,
                        LavadoSeco      = detalleFactura.LavadoSeco,
                        Planchado       = detalleFactura.Planchado,
                        Total           = detalleFactura.Total
                    };
                    listaDetallesFacturaDto.Add(detalleFacturaDto);
                }

                var listadoDetallesFacturas = new ListadoObtenerDetallesFacturaDto
                {
                    DetallesFactura = listaDetallesFacturaDto
                };

                var facturaConDetalleDto = new FacturasConDetalleDto
                {
                    Id             = factura.Id,
                    Nombre         = cliente.Nombres,
                    Identificacion = cliente.Identificacion,
                    Habitacion     = cliente.Habitacion,

                    SuplementoEntrega = solicitud.SuplementoEntrega,
                    Fecha             = solicitud.Fecha,

                    Doblado          = factura.Doblado,
                    Estado           = factura.Estado,
                    Suplemento       = factura.Suplemento,
                    TotalGlobal      = factura.TotalGlobal,
                    TotalParcial     = factura.TotalParcial,
                    DetallesFacturas = listadoDetallesFacturas
                };

                return(facturaConDetalleDto);
            }
            return(default(FacturasConDetalleDto));
        }