public async Task AgregarOrdenReparacionCelular(DtoOrdenDeReparacionCelular pOrdenCel)
        {
            var mOrden = await iUdt.RepositorioOrdenDeReparacion.Obtener(pOrdenCel.DtoOrdenDeReparacionCelularId);

            if (mOrden == null)
            {
                Cliente iCliente = await iUdt.RepositorioCliente.ObtenerClientePorDni(pOrdenCel.dni);

                if (iCliente == null)
                {
                    throw new ClienteNoEncontrado("No se encontro Cliente");
                }
                OrdenDeReparacion iOrdenRepaCel = new OrdenDeReparacion
                {
                    presupuesto       = pOrdenCel.presupuesto,
                    seña              = pOrdenCel.seña,
                    proveedor         = pOrdenCel.proveedor,
                    costoRepuesto     = pOrdenCel.costoRepuesto,
                    fechaIngreso      = pOrdenCel.fechaIngreso,
                    fechaEgreso       = pOrdenCel.fecheEgreso,
                    Cliente           = iCliente,
                    detalle           = pOrdenCel.detalleOrden,
                    estadoReparacion  = pOrdenCel.estado,
                    detalleReparacion = pOrdenCel.detalleReparacion,
                    precio            = pOrdenCel.precio,
                    TipoEquipo        = new TipoEquipo
                    {
                        nombre  = "Celular",
                        Celular = new Celular
                        {
                            tarjetaSd     = pOrdenCel.tarjetaSD,
                            chip          = pOrdenCel.chip,
                            diagnostico   = pOrdenCel.diagnosticoCelular,
                            empresa       = pOrdenCel.empresa,
                            pin           = pOrdenCel.pin,
                            enciende      = pOrdenCel.enciende,
                            patron        = pOrdenCel.patron,
                            ModeloCelular = new ModeloCelular
                            {
                                nombre       = pOrdenCel.nombreModeloCelular,
                                version      = pOrdenCel.versionCelular,
                                MarcaCelular = new MarcaCelular
                                {
                                    nombre = pOrdenCel.nombreMarcaCelular
                                }
                            }
                        }
                    }
                };
                await iUdt.RepositorioOrdenDeReparacion.Agregar(iOrdenRepaCel);

                await iUdt.Guardar();
            }
            else
            {
                throw new OrdenReparacionCelularExistente("La orden reparación ya se encuentra registrada");
            }
        }
        public async Task <ActionResult <DtoOrdenDeReparacionCelular> > ObtenerUnaOrdenReparacionCelular(int pId)
        {
            var mOrdenRepa = await iUdt.RepositorioOrdenDeReparacion.Obtener(pId);

            if ((mOrdenRepa == null) || (mOrdenRepa.TipoEquipo.nombre == "Pc"))
            {
                throw new OrdenReparacionCelularNoEncontrada("No se encontro Orden Reparación");
            }
            DtoOrdenDeReparacionCelular mOrdenReparacionDTO = iMapper.Map <OrdenDeReparacion, DtoOrdenDeReparacionCelular>(mOrdenRepa);

            return(mOrdenReparacionDTO);
        }
        public async Task ModificarOrdenReparacionCelular(DtoOrdenDeReparacionCelular ordenReparacionDTO)
        {
            bool existencia = iUdt.RepositorioOrdenDeReparacion.ConsultarExistenciaCelular(ordenReparacionDTO.DtoOrdenDeReparacionCelularId);

            if (existencia == false)
            {
                throw new OrdenReparacionCelularNoEncontrada("No se encontro Orden de Reparación");
            }
            bool existenciaCliente = iUdt.RepositorioCliente.ConsultarExistencia(ordenReparacionDTO.dni);

            if (existenciaCliente == false)
            {
                throw new ClienteNoEncontrado("No se encontro Dni Cliente");
            }
            var mOrdenRepaMod = await iUdt.RepositorioOrdenDeReparacion.Obtener(ordenReparacionDTO.DtoOrdenDeReparacionCelularId);

            mOrdenRepaMod.Cliente = await iUdt.RepositorioCliente.ObtenerClientePorDni(ordenReparacionDTO.dni);

            mOrdenRepaMod.detalle                                              = ordenReparacionDTO.detalleOrden;
            mOrdenRepaMod.detalleReparacion                                    = ordenReparacionDTO.detalleReparacion;
            mOrdenRepaMod.estadoReparacion                                     = ordenReparacionDTO.estado;
            mOrdenRepaMod.fechaEgreso                                          = ordenReparacionDTO.fecheEgreso;
            mOrdenRepaMod.fechaIngreso                                         = ordenReparacionDTO.fechaIngreso;
            mOrdenRepaMod.precio                                               = ordenReparacionDTO.precio;
            mOrdenRepaMod.TipoEquipo.Celular.chip                              = ordenReparacionDTO.chip;
            mOrdenRepaMod.TipoEquipo.Celular.diagnostico                       = ordenReparacionDTO.diagnosticoCelular;
            mOrdenRepaMod.TipoEquipo.Celular.empresa                           = ordenReparacionDTO.empresa;
            mOrdenRepaMod.TipoEquipo.Celular.enciende                          = ordenReparacionDTO.enciende;
            mOrdenRepaMod.TipoEquipo.Celular.ModeloCelular.version             = ordenReparacionDTO.versionCelular;
            mOrdenRepaMod.TipoEquipo.Celular.ModeloCelular.nombre              = ordenReparacionDTO.nombreModeloCelular;
            mOrdenRepaMod.TipoEquipo.Celular.ModeloCelular.MarcaCelular.nombre = ordenReparacionDTO.nombreMarcaCelular;
            mOrdenRepaMod.TipoEquipo.Celular.patron                            = ordenReparacionDTO.patron;
            mOrdenRepaMod.TipoEquipo.Celular.pin                               = ordenReparacionDTO.pin;
            mOrdenRepaMod.TipoEquipo.Celular.tarjetaSd                         = ordenReparacionDTO.tarjetaSD;
            mOrdenRepaMod.presupuesto                                          = ordenReparacionDTO.presupuesto;
            mOrdenRepaMod.seña          = ordenReparacionDTO.seña;
            mOrdenRepaMod.proveedor     = ordenReparacionDTO.proveedor;
            mOrdenRepaMod.costoRepuesto = ordenReparacionDTO.costoRepuesto;
            iUdt.RepositorioOrdenDeReparacion.ModificarEntidades(mOrdenRepaMod);
            await iUdt.Guardar();
        }
        public async Task <IActionResult> PutOrdenReparacionCelularDTO(DtoOrdenDeReparacionCelular OrdenReparacionDTO)
        {
            try
            {
                await iLogicaOrdenReparacionCel.ModificarOrdenReparacionCelular(OrdenReparacionDTO);

                return(Ok("Se modificó Orden Reparacion Celular"));
            }
            catch (ClienteNoEncontrado msg)
            {
                return(StatusCode(412, msg.Message));
            }
            catch (OrdenReparacionCelularNoEncontrada msg)
            {
                return(NotFound(msg.Message));
            }
            catch (Exception msg)
            {
                return(StatusCode(500, msg.Message));
            }
        }
        public async Task <ActionResult> PostOrdenReparacionDTO(DtoOrdenDeReparacionCelular pOrdenReparacionCelular)
        {
            try
            {
                await iLogicaOrdenReparacionCel.AgregarOrdenReparacionCelular(pOrdenReparacionCelular);

                return(Ok("Se registró Orden Reparacion Celular"));
            }
            catch (ClienteNoEncontrado msg)
            {
                return(StatusCode(412, msg.Message));
            }
            catch (OrdenReparacionCelularExistente msg)
            {
                return(StatusCode(412, msg.Message));
            }
            catch (Exception msg)
            {
                return(StatusCode(500, msg.Message));
            }
        }