public void ModificarInformeInspeccion(InformeInspeccionNissan informeInspeccionNissan)
        {
            foreach (var grupo in informeInspeccionNissan.GruposDetallesInformeInspeccionNissan)
            {
                if (grupo.Id <= 0)
                {
                    _context.Entry(grupo).State = EntityState.Added;
                }
                else
                {
                    _context.Entry(grupo).State = EntityState.Modified;
                }

                foreach (var detalle in grupo.Detalles)
                {
                    if (detalle.Id <= 0)
                    {
                        _context.Entry(detalle).State = EntityState.Added;
                    }
                    else
                    {
                        _context.Entry(detalle).State = EntityState.Modified;
                    }

                    foreach (var opcion in detalle.Opciones)
                    {
                        if (opcion.Id <= 0)
                        {
                            _context.Entry(opcion).State = EntityState.Added;
                        }
                        else
                        {
                            _context.Entry(opcion).State = EntityState.Modified;
                        }
                    }
                }
            }
            //_context.InformeInspeccionNissan.Attach(informeInspeccionNissan);
            _context.Entry(informeInspeccionNissan).State = EntityState.Modified;
            _context.InformeInspeccionNissan.Attach(informeInspeccionNissan);
            _context.SaveChanges();
        }
        public void MapearDesde(InformeInspeccionNissanCompleto informeInspeccionNissanCompleto, InformeInspeccionNissan informeInspeccionNissan)
        {
            this.Id = informeInspeccionNissanCompleto.Id;
            this.Fecha = informeInspeccionNissanCompleto.Fecha.ToShortDateString();
            this.IndicadorEstado = informeInspeccionNissanCompleto.IndicadorEstado;
            this.InformeInspeccionId = informeInspeccionNissanCompleto.InformeInspeccionId;
            this.Preventivo = informeInspeccionNissanCompleto.Preventivo;
            this.Correctivo = informeInspeccionNissanCompleto.Correctivo;
            this.Kms = informeInspeccionNissanCompleto.Kms;
            this.NumeroOT = informeInspeccionNissanCompleto.NumeroOT;
            this.Cliente = informeInspeccionNissanCompleto.Cliente;
            this.Tecnico = informeInspeccionNissanCompleto.Tecnico;
            this.Placa = informeInspeccionNissanCompleto.Placa;
            this.ResultadosMantenimiento = informeInspeccionNissanCompleto.ResultadosMantenimiento;
            this.Descripcion = informeInspeccionNissan.Descripcion;
            this.GruposEspeciales = (
                    from G in informeInspeccionNissanCompleto.GruposInformeInspeccionNissanCompleto
                    where G.GrupoinformeInspeccionNissan.TipoGrupo == TipoGrupoInformeInspeccionNissan.Medicion
                    select new GrupoCompletoNissanGetViewModel
                    {
                        Id = G.Id, // Id de GrupoCompletoNissanGetViewModel
                        Descripcion = G.GrupoinformeInspeccionNissan.Descripcion,
                        TipoGrupo = G.GrupoinformeInspeccionNissan.TipoGrupo,
                        Detalles = (
                            from D in G.DetallesInformeInspeccionNissanCompleto
                            select new DetalleCompletoNissanGetViewModel
                            {
                                Id = D.Id,
                                Descripcion = D.DetalleInformeInspeccionNissan.Descripcion,
                                OpcionesCheckCalidad =
                                (
                                    from OCC in D.Valores
                                    where OCC.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckCalidad
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCC.Id,
                                        OpcionId = OCC.OpcionId,
                                        Descripcion = OCC.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OCC.DetalleInformeInspeccionCompletoId,
                                        Valor = OCC.Valor
                                    }
                                ).ToList(),

                                OpcionesCheckRevision =
                                (
                                    from OCR in D.Valores
                                    where OCR.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckRevision
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCR.Id,
                                        OpcionId = OCR.OpcionId,
                                        Descripcion = OCR.Opcion.Descripcion,
                                        Valor = OCR.Valor,
                                        DetalleInformeInspeccionCompletoId = OCR.DetalleInformeInspeccionCompletoId
                                    }
                                ).ToList(),

                                OpcionesMedicion =
                                (
                                    from OM in D.Valores
                                    where OM.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionMedicion
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OM.Id,
                                        OpcionId = OM.OpcionId,
                                        Descripcion = OM.Opcion.Descripcion,
                                        Valor = OM.Valor,
                                        DetalleInformeInspeccionCompletoId = OM.DetalleInformeInspeccionCompletoId
                                    }
                                ).ToList()
                            }
                        ).ToList()
                    }
                ).ToList();
            this.GruposCalidad = (
                    from G in informeInspeccionNissanCompleto.GruposInformeInspeccionNissanCompleto
                    where G.GrupoinformeInspeccionNissan.TipoGrupo == TipoGrupoInformeInspeccionNissan.Calidad
                    select new GrupoCompletoNissanGetViewModel
                    {
                        Id = G.Id, // Id de GrupoCompletoNissanGetViewModel
                        Descripcion = G.GrupoinformeInspeccionNissan.Descripcion,
                        TipoGrupo = G.GrupoinformeInspeccionNissan.TipoGrupo,
                        Detalles = (
                            from D in G.DetallesInformeInspeccionNissanCompleto
                            select new DetalleCompletoNissanGetViewModel
                            {
                                Id = D.Id,
                                Descripcion = D.DetalleInformeInspeccionNissan.Descripcion,
                                OpcionesCheckCalidad =
                                (
                                    from OCC in D.Valores
                                    where OCC.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckCalidad
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCC.Id,
                                        OpcionId = OCC.OpcionId,
                                        Descripcion = OCC.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OCC.DetalleInformeInspeccionCompletoId,
                                        Valor = OCC.Valor
                                    }
                                ).ToList(),

                                OpcionesCheckRevision =
                                (
                                    from OCR in D.Valores
                                    where OCR.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckRevision
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCR.Id,
                                        OpcionId = OCR.OpcionId,
                                        Descripcion = OCR.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OCR.DetalleInformeInspeccionCompletoId,
                                        Valor = OCR.Valor
                                    }
                                ).ToList(),

                                OpcionesMedicion =
                                (
                                    from OM in D.Valores
                                    where OM.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionMedicion
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OM.Id,
                                        OpcionId = OM.OpcionId,
                                        Descripcion = OM.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OM.DetalleInformeInspeccionCompletoId,
                                        Valor = OM.Valor
                                    }
                                ).ToList()
                            }
                        ).ToList()
                    }
                ).ToList();
            this.Grupos = (
                    from G in informeInspeccionNissanCompleto.GruposInformeInspeccionNissanCompleto
                    where G.GrupoinformeInspeccionNissan.TipoGrupo == TipoGrupoInformeInspeccionNissan.Revision
                    select new GrupoCompletoNissanGetViewModel
                    {
                        Id = G.Id, // Id de GrupoCompletoNissanGetViewModel
                        Descripcion = G.GrupoinformeInspeccionNissan.Descripcion,
                        TipoGrupo = G.GrupoinformeInspeccionNissan.TipoGrupo,
                        Detalles = (
                            from D in G.DetallesInformeInspeccionNissanCompleto
                            select new DetalleCompletoNissanGetViewModel
                            {
                                Id = D.Id,
                                Descripcion = D.DetalleInformeInspeccionNissan.Descripcion,
                                OpcionesCheckCalidad =
                                (
                                    from OCC in D.Valores
                                    where OCC.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckCalidad
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCC.Id,
                                        OpcionId = OCC.OpcionId,
                                        Descripcion = OCC.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OCC.DetalleInformeInspeccionCompletoId,
                                        Valor = OCC.Valor
                                    }
                                ).ToList(),

                                OpcionesCheckRevision =
                                (
                                    from OCR in D.Valores
                                    where OCR.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionCheckRevision
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OCR.Id,
                                        OpcionId = OCR.OpcionId,
                                        Descripcion = OCR.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OCR.DetalleInformeInspeccionCompletoId,
                                        Valor = OCR.Valor,
                                    }
                                ).ToList(),

                                OpcionesMedicion =
                                (
                                    from OM in D.Valores
                                    where OM.Opcion.CodigoAgrupacion == TipoOpcionNissan.OpcionMedicion
                                    select new ValorOpcionCompletoNissanGetViewModel
                                    {
                                        Id = OM.Id,
                                        OpcionId = OM.OpcionId,
                                        Descripcion = OM.Opcion.Descripcion,
                                        DetalleInformeInspeccionCompletoId = OM.DetalleInformeInspeccionCompletoId,
                                        Valor = OM.Valor
                                    }
                                ).ToList()
                            }
                        ).ToList()
                    }
                ).ToList();
        }
        public InformeInspeccionNissan Crear(InformeInspeccionPostNissanViewModel informeInspeccionPostNissanViewModel)
        {
            InformeInspeccionNissan informeInspeccion = new InformeInspeccionNissan();
            List<GrupoInformeInspeccionNissan> grupos = new List<GrupoInformeInspeccionNissan>();

            #region GruposRevision
            foreach (var grupo in informeInspeccionPostNissanViewModel.Grupos)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                                {
                                    CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                    Descripcion = opcion.Descripcion
                                }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCheckRevision.ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Revision;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            #region GruposCalidad
            foreach (var grupo in informeInspeccionPostNissanViewModel.GruposCalidad)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCalidad.ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Calidad;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            #region GruposEspeciales
            foreach (var grupo in informeInspeccionPostNissanViewModel.GruposEspeciales)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCheckRevision.Concat(opcionesMedicion).ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Medicion;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            informeInspeccion.Nombre = informeInspeccionPostNissanViewModel.Nombre;
            informeInspeccion.Descripcion = informeInspeccionPostNissanViewModel.Descripcion;
            informeInspeccion.GruposDetallesInformeInspeccionNissan = grupos;

            return informeInspeccion;
        }
        public object Get(int id)
        {
            InformeInspeccionNissan informe = new InformeInspeccionNissan();
            InformeInspeccionCuerpoCompletoNissanViewModel informeCuerpoCompletoNissan = new InformeInspeccionCuerpoCompletoNissanViewModel();

            try
            {
                informe = _informeInspeccionNissanRepositorio.BuscarInformeInspeccionPorId(id);
                informeCuerpoCompletoNissan.MapearDesde(informe);
            }
            catch (Exception e)
            {
                return new
                {
                    Status = 500,
                    Mensaje = "ERROR!",
                    Error = e.Message
                };
            }

            return informeCuerpoCompletoNissan;
        }
 public void MapearDesde(InformeInspeccionNissan informeInspeccionNissan)
 {
     Descripcion = informeInspeccionNissan.Descripcion;
     Nombre = informeInspeccionNissan.Nombre;
     GruposEspeciales = (
         from G in informeInspeccionNissan.GruposMedicion
         select new GrupoInformeInspeccionCuerpoCompletoNissanViewModel
         {
             Id = G.Id,
             DescripcionGrupo = G.Descripcion,
             TipoGrupo = G.TipoGrupo,
             Detalles = (
                 from D in G.DetallesActivos
                 select new DetalleInformeInspeccionCuerpoCompletoNissanViewModel
                 {
                     Id = D.Id,
                     IndicadorEstado = D.IndicadorEstado,
                     Descripcion = D.Descripcion,
                     OpcionesCheckCalidad =
                     (
                         from OCC in D.OpcionesCheckCalidad
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCC.Id,
                             Descripcion = OCC.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesCheckRevision =
                     (
                         from OCR in D.OpcionesCheckRevision
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCR.Id,
                             Descripcion = OCR.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesMedicion =
                     (
                         from OM in D.OpcionesMedicion
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OM.Id,
                             Descripcion = OM.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList()
                 }
             ).ToList()
         }
     ).ToList();
     GruposCalidad = (
         from G in informeInspeccionNissan.GruposCalidad
         select new GrupoInformeInspeccionCuerpoCompletoNissanViewModel
         {
             Id = G.Id,
             DescripcionGrupo = G.Descripcion,
             TipoGrupo = G.TipoGrupo,
             Detalles = (
                 from D in G.DetallesActivos
                 select new DetalleInformeInspeccionCuerpoCompletoNissanViewModel
                 {
                     Id = D.Id,
                     Descripcion = D.Descripcion,
                     OpcionesCheckCalidad =
                     (
                         from OCC in D.OpcionesCheckCalidad
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCC.Id,
                             Descripcion = OCC.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesCheckRevision =
                     (
                         from OCR in D.OpcionesCheckRevision
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCR.Id,
                             Descripcion = OCR.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesMedicion =
                     (
                         from OM in D.OpcionesMedicion
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OM.Id,
                             Descripcion = OM.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList()
                 }
             ).ToList()
         }
     ).ToList();
     Grupos = (
         from G in informeInspeccionNissan.GruposRevision
         select new GrupoInformeInspeccionCuerpoCompletoNissanViewModel
         {
             Id = G.Id,
             DescripcionGrupo = G.Descripcion,
             TipoGrupo = G.TipoGrupo,
             Detalles = (
                 from D in G.DetallesActivos
                 select new DetalleInformeInspeccionCuerpoCompletoNissanViewModel
                 {
                     Id = D.Id,
                     Descripcion = D.Descripcion,
                     OpcionesCheckCalidad =
                     (
                         from OCC in D.OpcionesCheckCalidad
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCC.Id,
                             Descripcion = OCC.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesCheckRevision =
                     (
                         from OCR in D.OpcionesCheckRevision
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OCR.Id,
                             Descripcion = OCR.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList(),
                     OpcionesMedicion =
                     (
                         from OM in D.OpcionesMedicion
                         select new OpcionInformeInspeccionCuerpoCompletoNissanViewModel
                         {
                             Id = OM.Id,
                             Descripcion = OM.Descripcion,
                             Valor = string.Empty
                         }
                     ).ToList()
                 }
             ).ToList()
         }
     ).ToList();
 }
 public void GuardarInformeInspeccion(InformeInspeccionNissan informeInspeccionNissan)
 {
     _context.InformeInspeccionNissan.Add(informeInspeccionNissan);
     _context.SaveChanges();
 }
 public void AnularInformeInspeccion(InformeInspeccionNissan informeInspeccionNissan)
 {
     _context.Entry(informeInspeccionNissan).State = EntityState.Modified;
     _context.SaveChanges();
 }