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 void GuardarInformeInspeccionCompleto(InformeInspeccionNissanCompleto informeInspeccionNissanCompleto)
 {
     _context.InformeInspeccionNissanCompleto.Add(informeInspeccionNissanCompleto);
     _context.SaveChanges();
 }
 public void ModificarInformeInspeccionCompleto(InformeInspeccionNissanCompleto informeInspeccionNissanCompleto)
 {
     throw new NotImplementedException();
 }
        public InformeInspeccionNissanCompleto Crear(InformeInspeccionCompletoPostNissanViewModel viewModel)
        {
            InformeInspeccionNissanCompleto informeInspeccionNissanCompleto = new InformeInspeccionNissanCompleto();
            List<GrupoInformeInspeccionNissanCompleto> gruposInformeInspeccion = new List<GrupoInformeInspeccionNissanCompleto>();

            foreach (var grupo in viewModel.GruposEspeciales)
            {
                GrupoInformeInspeccionNissanCompleto grupoInformeInspeccion = new GrupoInformeInspeccionNissanCompleto();
                List<DetalleInformeInspeccionNissanCompleto> detallesInformeInspeccionNissanCompleto = new List<DetalleInformeInspeccionNissanCompleto>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissanCompleto detalleInformeInspeccionNissanCompleto = new DetalleInformeInspeccionNissanCompleto();

                    List<ValorOpcion> valorOpcionesCheckCalidad = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesCheckRevision = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesMedicion = new List<ValorOpcion>();

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckCalidad)
                        {
                            valorOpcionesCheckCalidad.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckRevision)
                        {
                            valorOpcionesCheckRevision.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var valor in detalle.OpcionesMedicion)
                        {
                            valorOpcionesMedicion.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    detalleInformeInspeccionNissanCompleto.AgregarDetalleValores(
                        detalle.Id,
                        valorOpcionesCheckCalidad.Concat(valorOpcionesCheckRevision).Concat(valorOpcionesMedicion).ToList());
                    // Añadimos a la coleccion de detalles
                    detallesInformeInspeccionNissanCompleto.Add(detalleInformeInspeccionNissanCompleto);
                }

                grupoInformeInspeccion.GrupoInformeInspeccionId = grupo.Id;
                grupoInformeInspeccion.DetallesInformeInspeccionNissanCompleto = detallesInformeInspeccionNissanCompleto;
                grupoInformeInspeccion.Tipo = "Nissan";
                // Añadimos a la coleccion de grupos
                gruposInformeInspeccion.Add(grupoInformeInspeccion);
            }

            foreach (var grupo in viewModel.GruposCalidad)
            {
                GrupoInformeInspeccionNissanCompleto grupoInformeInspeccion = new GrupoInformeInspeccionNissanCompleto();
                List<DetalleInformeInspeccionNissanCompleto> detallesInformeInspeccionNissanCompleto = new List<DetalleInformeInspeccionNissanCompleto>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissanCompleto detalleInformeInspeccionNissanCompleto = new DetalleInformeInspeccionNissanCompleto();

                    List<ValorOpcion> valorOpcionesCheckCalidad = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesCheckRevision = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesMedicion = new List<ValorOpcion>();

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckCalidad)
                        {
                            valorOpcionesCheckCalidad.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckRevision)
                        {
                            valorOpcionesCheckRevision.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var valor in detalle.OpcionesMedicion)
                        {
                            valorOpcionesMedicion.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    detalleInformeInspeccionNissanCompleto.AgregarDetalleValores(
                        detalle.Id,
                        valorOpcionesCheckCalidad.Concat(valorOpcionesCheckRevision).Concat(valorOpcionesMedicion).ToList());
                    // Añadimos a la coleccion de detalles
                    detallesInformeInspeccionNissanCompleto.Add(detalleInformeInspeccionNissanCompleto);
                }

                grupoInformeInspeccion.GrupoInformeInspeccionId = grupo.Id;
                grupoInformeInspeccion.DetallesInformeInspeccionNissanCompleto = detallesInformeInspeccionNissanCompleto;
                grupoInformeInspeccion.Tipo = "Nissan";
                // Añadimos a la coleccion de grupos
                gruposInformeInspeccion.Add(grupoInformeInspeccion);
            }

            foreach (var grupo in viewModel.Grupos)
            {
                GrupoInformeInspeccionNissanCompleto grupoInformeInspeccion = new GrupoInformeInspeccionNissanCompleto();
                List<DetalleInformeInspeccionNissanCompleto> detallesInformeInspeccionNissanCompleto = new List<DetalleInformeInspeccionNissanCompleto>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissanCompleto detalleInformeInspeccionNissanCompleto = new DetalleInformeInspeccionNissanCompleto();

                    List<ValorOpcion> valorOpcionesCheckCalidad = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesCheckRevision = new List<ValorOpcion>();
                    List<ValorOpcion> valorOpcionesMedicion = new List<ValorOpcion>();

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckCalidad)
                        {
                            valorOpcionesCheckCalidad.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var valor in detalle.OpcionesCheckRevision)
                        {
                            valorOpcionesCheckRevision.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var valor in detalle.OpcionesMedicion)
                        {
                            valorOpcionesMedicion.Add(new ValorOpcion
                            {
                                OpcionId = valor.Id,
                                Valor = valor.Valor
                            });
                        }
                    }

                    detalleInformeInspeccionNissanCompleto.AgregarDetalleValores(
                        detalle.Id,
                        valorOpcionesCheckCalidad.Concat(valorOpcionesCheckRevision).Concat(valorOpcionesMedicion).ToList());
                    // Añadimos a la coleccion de detalles
                    detallesInformeInspeccionNissanCompleto.Add(detalleInformeInspeccionNissanCompleto);
                }

                grupoInformeInspeccion.GrupoInformeInspeccionId = grupo.Id;
                grupoInformeInspeccion.DetallesInformeInspeccionNissanCompleto = detallesInformeInspeccionNissanCompleto;
                grupoInformeInspeccion.Tipo = "Nissan";
                // Añadimos a la coleccion de grupos
                gruposInformeInspeccion.Add(grupoInformeInspeccion);
            }

            informeInspeccionNissanCompleto.InformeInspeccionId = viewModel.InformeInspeccionId;
            informeInspeccionNissanCompleto.Cliente = viewModel.CLIENTE;
            informeInspeccionNissanCompleto.Correctivo = viewModel.CORRECTIVO;
            informeInspeccionNissanCompleto.Kms = viewModel.KM;
            informeInspeccionNissanCompleto.NumeroOT = viewModel.OT;
            informeInspeccionNissanCompleto.Placa = viewModel.PLACA;
            informeInspeccionNissanCompleto.Preventivo = viewModel.PREVENTIVO;
            informeInspeccionNissanCompleto.ResultadosMantenimiento = viewModel.ResultadosMantenimiento;
            informeInspeccionNissanCompleto.Tecnico = viewModel.Tecnico;
            informeInspeccionNissanCompleto.GruposInformeInspeccionNissanCompleto = gruposInformeInspeccion;

            return informeInspeccionNissanCompleto;
        }