Ejemplo n.º 1
0
        private async void EditarCeldaEndingUsuario(DataGridCellEditEndingEventArgs e)
        {
            if (e.EditAction == DataGridEditAction.Commit)
            {
                var usuarioSeleccionado = e.Row.DataContext as Usuario;
                if (e.Column.DisplayIndex == 1) // 1 = Posición columna contraseña
                {
                    ContentPresenter contentPresenter = e.EditingElement as ContentPresenter;
                    DataTemplate     editingTemplate  = contentPresenter.ContentTemplate;
                    PasswordBox      contrasena       = editingTemplate.FindName("pbContrasena", contentPresenter) as PasswordBox;
                    string           hashContrasena   = ContrasenaHashing.ObtenerHashSHA256(ContrasenaHashing.SecureStringToString(contrasena.SecurePassword));
                    usuarioSeleccionado.Contrasena = hashContrasena;
                }

                // Comprueba si se va a baneado al admin que haya a menos otro admin activo
                if (usuarioSeleccionado.TipoUsuario.TipoUsuarioId == 1 && usuarioSeleccionado.Baneado == true &&
                    !context.Usuarios.Any(u => u.TipoId == 1 && u.Baneado != false && u.UsuarioId != usuarioSeleccionado.UsuarioId))
                {
                    usuarioSeleccionado.Baneado = false;
                    await DialogHost.Show(new MensajeInformacion()
                    {
                        Mensaje = "No se puede banear el usuario ya que al menos tiene que haber un admin activo."
                    }, "RootDialog");
                }

                context.SaveChanges();

                if (e.Column.DisplayIndex == 3) // 3 = Posición columna tipo usuario
                {
                    ContadorViewModel.Tipos = new ObservableCollection <TipoUsuario>(context.TiposUsuarios.ToList());
                }
            }
        }
Ejemplo n.º 2
0
        private async void ModificarUsuario()
        {
            var usuarioLogeado = context.Usuarios.Single(u => u.Nombre == Properties.Settings.Default.usuario);

            // El usuario Super Administrador no se puede borrar
            if (UsuarioSeleccionado.TipoId == 1 && usuarioLogeado.TipoId != 1)
            {
                await DialogHost.Show(new MensajeInformacion()
                {
                    Mensaje = "No se puede modificar ese usuario."
                }, "RootDialog");
            }

            // Si el usuario logeado o tiene la gestión de permisos y el usuario seleccionado sí, entonces no se puede modificar
            else if (!usuarioLogeado.TipoUsuario.Permisos.Select(p => p.Tab).Contains(Tab.Permisos) &&
                     UsuarioSeleccionado.TipoUsuario.Permisos.Select(p => p.Tab).Contains(Tab.Permisos))
            {
                await DialogHost.Show(new MensajeInformacion()
                {
                    Mensaje = "No se puede modificar ese usuario ya que no se tiene permisos suficientes."
                }, "RootDialog");
            }

            // Se procede a modificar
            else
            {
                var formUsuario = new FormUsuario(UsuarioSeleccionado);
                if ((bool)await DialogHost.Show(formUsuario, "RootDialog"))
                {
                    var formUsuarioViewModel = formUsuario.DataContext as FormUsuarioViewModel;

                    var hashContrasena = ContrasenaHashing.ObtenerHashSHA256(
                        ContrasenaHashing.SecureStringToString(formUsuarioViewModel.Contrasena)
                        );
                    UsuarioSeleccionado.Nombre     = formUsuarioViewModel.Nombre;
                    UsuarioSeleccionado.Email      = formUsuarioViewModel.Email;
                    UsuarioSeleccionado.TipoId     = formUsuarioViewModel.TipoUsuarioSeleccionado.TipoUsuarioId;
                    UsuarioSeleccionado.Contrasena = hashContrasena;
                    UsuarioSeleccionado.Baneado    = formUsuarioViewModel.Baneado;
                    context.SaveChanges();
                }
            }
        }
Ejemplo n.º 3
0
        private async void bCambiarContrasena_Click(object sender, RoutedEventArgs e)
        {
            int usuarioId      = ((winAjustes.Owner as MainWindow).DataContext as MainWindowViewModel).Usuario.UsuarioId;
            var viewModel      = DataContext as WinAjustesViewModel;
            var hashContrasena = ContrasenaHashing.ObtenerHashSHA256(
                ContrasenaHashing.SecureStringToString(viewModel.Contrasena)
                );

            using (var context = new BiomasaEUPTContext())
            {
                var usuario = context.Usuarios.Single(u => u.UsuarioId == usuarioId);
                usuario.Contrasena = hashContrasena;
                context.SaveChanges();
            }
            var mensaje = new MensajeInformacion()
            {
                Titulo  = "Contraseña Cambiada",
                Mensaje = "La contraseña se ha cambiado correctamente."
            };
            var resultado = await DialogHost.Show(mensaje, "RootDialog");
        }
Ejemplo n.º 4
0
        private async void AnadirUsuario()
        {
            var formUsuario = new FormUsuario();

            if ((bool)await DialogHost.Show(formUsuario, "RootDialog"))
            {
                var formUsuarioViewModel = formUsuario.DataContext as FormUsuarioViewModel;

                var hashContrasena = ContrasenaHashing.ObtenerHashSHA256(
                    ContrasenaHashing.SecureStringToString(formUsuarioViewModel.Contrasena)
                    );

                context.Usuarios.Add(new Usuario()
                {
                    Nombre     = formUsuarioViewModel.Nombre,
                    Email      = formUsuarioViewModel.Email,
                    TipoId     = formUsuarioViewModel.TipoUsuarioSeleccionado.TipoUsuarioId,
                    Contrasena = hashContrasena,
                    Baneado    = formUsuarioViewModel.Baneado
                });
                context.SaveChanges();
                CargarUsuarios();
            }
        }
Ejemplo n.º 5
0
        private void IniciarSesion()
        {
            Console.WriteLine(Usuario);
            String hashContrasena = "";

            if (Contrasena != null)
            {
                hashContrasena = ContrasenaHashing.ObtenerHashSHA256(ContrasenaHashing.SecureStringToString(Contrasena));
            }

            var usuario = IniciarSesion(Usuario, hashContrasena);

            if (usuario != null)
            {
                Properties.Settings.Default.contrasena = RecordarContrasena == true ? hashContrasena : "";
                Properties.Settings.Default.usuario    = Usuario;
                Properties.Settings.Default.Save();
                CargarVistaMain(usuario);
            }
            else
            {
                MensajeLoginIncorrecto();
            }
        }
Ejemplo n.º 6
0
        public SeedTablas(BiomasaEUPTContext context)
        {
            this.context = context;
            assembly     = Assembly.GetExecutingAssembly();

            CsvConfiguration csvConfig = new CsvConfiguration()
            {
                WillThrowOnMissingField = false,
                Delimiter = ";"
            };

            string resourceName = String.Format(NOMBRE_CSV, "TiposUsuarios");

            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <TipoUsuario>().ToArray();
                    context.TiposUsuarios.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Permisos");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <Permiso>();
                    while (csvReader.Read())
                    {
                        // Alternativa a PermisoMap
                        datos.Add(new Permiso()
                        {
                            PermisoId = csvReader.GetField <int>("PermisoId"),
                            Tab       = (Tab)Enum.Parse(typeof(Tab), csvReader.GetField <string>("Tab")),
                            TipoId    = csvReader.GetField <int>("TipoId")
                        });
                    }
                    context.Permisos.AddOrUpdate(d => d.PermisoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Usuarios");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    csvReader.Configuration.RegisterClassMap <UsuarioMap>();
                    var datos = csvReader.GetRecords <Usuario>().ToArray();
                    foreach (var d in datos)
                    {
                        if (d.Contrasena == null)
                        {
                            d.Contrasena = ContrasenaHashing.ObtenerHashSHA256(d.Nombre);
                        }
                    }
                    context.Usuarios.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "TiposProveedores");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <TipoProveedor>().ToArray();
                    context.TiposProveedores.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "TiposClientes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <TipoCliente>().ToArray();
                    context.TiposClientes.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "GruposClientes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <GrupoCliente>().ToArray();
                    context.GruposClientes.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Paises");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <Pais>().ToArray();
                    context.Paises.AddOrUpdate(d => d.Codigo, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Comunidades");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    // Hay que mapear cada columna ya que la columna Codigo
                    // piensa que es la de la tabla Pais
                    csvReader.Configuration.RegisterClassMap <ComunidadMap>();
                    var datos = csvReader.GetRecords <Comunidad>().ToArray();
                    foreach (var d in datos)
                    {
                        if (d.PaisId == null)
                        {
                            d.PaisId = context.Paises.Single(c => c.Codigo == d.Codigo.Substring(0, 2)).PaisId;
                        }
                    }
                    context.Comunidades.AddOrUpdate(d => d.Codigo, datos);
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "Provincias");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    csvReader.Configuration.RegisterClassMap <ProvinciaMap>();
                    while (csvReader.Read())
                    {
                        var provincia       = csvReader.GetRecord <Provincia>();
                        var codigoComunidad = csvReader.GetField <string>("CodigoComunidad");
                        provincia.ComunidadId = context.Comunidades.Single(c => c.Codigo == codigoComunidad).ComunidadId;
                        context.Provincias.AddOrUpdate(p => p.Codigo, provincia);
                    }
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Municipios");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    csvReader.Configuration.RegisterClassMap <MunicipioMap>();
                    while (csvReader.Read())
                    {
                        var municipio       = csvReader.GetRecord <Municipio>();
                        var codigoProvincia = csvReader.GetField <string>("CodigoProvincia");
                        municipio.ProvinciaId = context.Provincias.Single(c => c.Codigo == codigoProvincia).ProvinciaId;
                        // Si se ejecuta dos veces el seed puede machacar municipios por tener el mismo código postal
                        context.Municipios.AddOrUpdate(m => m.CodigoPostal, municipio);
                    }
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "Clientes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    csvReader.Configuration.RegisterClassMap <ClienteMap>();
                    var datos = csvReader.GetRecords <Cliente>().ToArray();
                    foreach (var d in datos)
                    {
                        if (d.Observaciones == string.Empty)
                        {
                            d.Observaciones = null;
                        }
                    }
                    context.Clientes.AddOrUpdate(p => p.ClienteId, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Proveedores");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    csvReader.Configuration.RegisterClassMap <ProveedorMap>();
                    var datos = csvReader.GetRecords <Proveedor>().ToArray();
                    foreach (var d in datos)
                    {
                        if (d.Observaciones == string.Empty)
                        {
                            d.Observaciones = null;
                        }
                    }
                    context.Proveedores.AddOrUpdate(p => p.ProveedorId, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "EstadosRecepciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <EstadoRecepcion>().ToArray();
                    context.EstadosRecepciones.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "SitiosRecepciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <SitioRecepcion>().ToArray();
                    context.SitiosRecepciones.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "HuecosRecepciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <HuecoRecepcion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a HuecoRecepcionMap
                        datos.Add(new HuecoRecepcion()
                        {
                            HuecoRecepcionId = csvReader.GetField <int>("HuecoRecepcionId"),
                            Nombre           = csvReader.GetField <string>("Nombre"),
                            UnidadesTotales  = csvReader.GetField <int>("UnidadesTotales"),
                            VolumenTotal     = csvReader.GetField <double>("VolumenTotal"),
                            SitioId          = csvReader.GetField <int>("SitioId")
                        });
                    }
                    context.HuecosRecepciones.AddOrUpdate(d => d.HuecoRecepcionId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Procedencias");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <Procedencia>().ToArray();
                    context.Procedencias.AddOrUpdate(d => d.ProcedenciaId, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Recepciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <Recepcion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a RecepcionMap
                        datos.Add(new Recepcion()
                        {
                            NumeroAlbaran  = csvReader.GetField <string>("NumeroAlbaran"),
                            FechaRecepcion = csvReader.GetField <DateTime>("FechaRecepcion"),
                            ProveedorId    = csvReader.GetField <int>("ProveedorId"),
                            EstadoId       = csvReader.GetField <int>("EstadoId")
                        });
                    }
                    context.Recepciones.AddOrUpdate(d => d.NumeroAlbaran, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "GruposMateriasPrimas");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <GrupoMateriaPrima>();
                    while (csvReader.Read())
                    {
                        // Alternativa a GrupoMateriaPrimaMap
                        datos.Add(new GrupoMateriaPrima()
                        {
                            GrupoMateriaPrimaId = csvReader.GetField <int>("GrupoMateriaPrimaId"),
                            Nombre      = csvReader.GetField <string>("Nombre"),
                            Descripcion = csvReader.GetField <string>("Descripcion")
                        });
                    }
                    context.GruposMateriasPrimas.AddOrUpdate(d => d.GrupoMateriaPrimaId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "TiposMateriasPrimas");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <TipoMateriaPrima>();
                    while (csvReader.Read())
                    {
                        // Alternativa a TipoMateriaPrimaMap
                        datos.Add(new TipoMateriaPrima()
                        {
                            TipoMateriaPrimaId = csvReader.GetField <int>("TipoMateriaPrimaId"),
                            Nombre             = csvReader.GetField <string>("Nombre"),
                            Descripcion        = csvReader.GetField <string>("Descripcion"),
                            MedidoEnUnidades   = csvReader.GetField <bool>("MedidoEnUnidades"),
                            MedidoEnVolumen    = csvReader.GetField <bool>("MedidoEnVolumen"),
                            GrupoId            = csvReader.GetField <int>("GrupoId")
                        });
                    }
                    context.TiposMateriasPrimas.AddOrUpdate(d => d.TipoMateriaPrimaId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "MateriasPrimas");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <MateriaPrima>();
                    while (csvReader.Read())
                    {
                        // Campos opcionales
                        csvReader.TryGetField <string>("Observaciones", out var observaciones);
                        observaciones = (observaciones == "") ? null : observaciones;

                        datos.Add(new MateriaPrima()
                        {
                            MateriaPrimaId = csvReader.GetField <int>("MateriaPrimaId"),
                            TipoId         = csvReader.GetField <int>("TipoId"),
                            Volumen        = csvReader.GetField <double?>("Volumen"),
                            Unidades       = csvReader.GetField <int?>("Unidades"),
                            RecepcionId    = csvReader.GetField <int>("RecepcionId"),
                            ProcedenciaId  = csvReader.GetField <int>("ProcedenciaId"),
                            FechaBaja      = csvReader.GetField <DateTime?>("FechaBaja"),
                            Observaciones  = observaciones
                        });
                    }
                    context.MateriasPrimas.AddOrUpdate(d => d.MateriaPrimaId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "HistorialHuecosRecepciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <HistorialHuecoRecepcion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a HistorialHuecoRecepcionMap
                        datos.Add(new HistorialHuecoRecepcion()
                        {
                            HistorialHuecoRecepcionId = csvReader.GetField <int>("HistorialHuecoRecepcionId"),
                            Volumen          = csvReader.GetField <double?>("Volumen"),
                            Unidades         = csvReader.GetField <int?>("Unidades"),
                            MateriaPrimaId   = csvReader.GetField <int>("MateriaPrimaId"),
                            HuecoRecepcionId = csvReader.GetField <int>("HuecoRecepcionId")
                        });
                    }
                    context.HistorialHuecosRecepciones.AddOrUpdate(d => d.HistorialHuecoRecepcionId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "EstadosElaboraciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <EstadoElaboracion>().ToArray();
                    context.EstadosElaboraciones.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "GruposProductosTerminados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <GrupoProductoTerminado>();
                    while (csvReader.Read())
                    {
                        // Alternativa a GrupoProductoTerminadoMap
                        datos.Add(new GrupoProductoTerminado()
                        {
                            GrupoProductoTerminadoId = csvReader.GetField <int>("GrupoProductoTerminadoId"),
                            Nombre      = csvReader.GetField <string>("Nombre"),
                            Descripcion = csvReader.GetField <string>("Descripcion")
                        });
                    }
                    context.GruposProductosTerminados.AddOrUpdate(d => d.GrupoProductoTerminadoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "TiposProductosTerminados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <TipoProductoTerminado>();
                    while (csvReader.Read())
                    {
                        // Alternativa a TipoProductoTerminadoMap
                        datos.Add(new TipoProductoTerminado()
                        {
                            TipoProductoTerminadoId = csvReader.GetField <int>("TipoProductoTerminadoId"),
                            Nombre           = csvReader.GetField <string>("Nombre"),
                            Tamano           = csvReader.GetField <string>("Tamano"),
                            Humedad          = csvReader.GetField <double>("Humedad"),
                            MedidoEnUnidades = csvReader.GetField <bool>("MedidoEnUnidades"),
                            MedidoEnVolumen  = csvReader.GetField <bool>("MedidoEnVolumen"),
                            GrupoId          = csvReader.GetField <int>("GrupoId")
                        });
                    }
                    context.TiposProductosTerminados.AddOrUpdate(d => d.TipoProductoTerminadoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "OrdenesElaboraciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <OrdenElaboracion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a OrdenElaboracionMap
                        datos.Add(new OrdenElaboracion()
                        {
                            OrdenElaboracionId  = csvReader.GetField <int>("OrdenElaboracionId"),
                            EstadoElaboracionId = csvReader.GetField <int>("EstadoElaboracionId"),
                            Descripcion         = csvReader.GetField <string>("Descripcion")
                        });
                    }
                    context.OrdenesElaboraciones.AddOrUpdate(d => d.OrdenElaboracionId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "SitiosAlmacenajes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <SitioAlmacenaje>().ToArray();
                    context.SitiosAlmacenajes.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "HuecosAlmacenajes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <HuecoAlmacenaje>();
                    while (csvReader.Read())
                    {
                        // Alternativa a HuecoAlmacenajeMap
                        datos.Add(new HuecoAlmacenaje()
                        {
                            HuecoAlmacenajeId = csvReader.GetField <int>("HuecoAlmacenajeId"),
                            Nombre            = csvReader.GetField <string>("Nombre"),
                            UnidadesTotales   = csvReader.GetField <int>("UnidadesTotales"),
                            VolumenTotal      = csvReader.GetField <double>("VolumenTotal"),
                            SitioId           = csvReader.GetField <int>("SitioId")
                        });
                    }
                    context.HuecosAlmacenajes.AddOrUpdate(d => d.HuecoAlmacenajeId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "ProductosTerminados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <ProductoTerminado>();
                    while (csvReader.Read())
                    {
                        // Campos opcionales
                        csvReader.TryGetField <string>("Observaciones", out var observaciones);
                        observaciones = (observaciones == "") ? null : observaciones;

                        datos.Add(new ProductoTerminado()
                        {
                            ProductoTerminadoId = csvReader.GetField <int>("ProductoTerminadoId"),
                            TipoId        = csvReader.GetField <int>("TipoId"),
                            Volumen       = csvReader.GetField <double?>("Volumen"),
                            Unidades      = csvReader.GetField <int?>("Unidades"),
                            OrdenId       = csvReader.GetField <int>("OrdenId"),
                            FechaBaja     = csvReader.GetField <DateTime?>("FechaBaja"),
                            Observaciones = observaciones
                        });
                    }
                    context.ProductosTerminados.AddOrUpdate(d => d.ProductoTerminadoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "HistorialHuecosAlmacenajes");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <HistorialHuecoAlmacenaje>();
                    while (csvReader.Read())
                    {
                        // Alternativa a HistorialHuecoAlmacenajeMap
                        datos.Add(new HistorialHuecoAlmacenaje()
                        {
                            HistorialHuecoAlmacenajeId = csvReader.GetField <int>("HistorialHuecoAlmacenajeId"),
                            Volumen             = csvReader.GetField <double?>("Volumen"),
                            Unidades            = csvReader.GetField <int?>("Unidades"),
                            ProductoTerminadoId = csvReader.GetField <int>("ProductoTerminadoId"),
                            HuecoAlmacenajeId   = csvReader.GetField <int>("HuecoAlmacenajeId")
                        });
                    }
                    context.HistorialHuecosAlmacenajes.AddOrUpdate(d => d.HistorialHuecoAlmacenajeId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "ProductosTerminadosComposiciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <ProductoTerminadoComposicion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a ProductoTerminadoComposicionMap
                        datos.Add(new ProductoTerminadoComposicion()
                        {
                            ProductoTerminadoComposicionId = csvReader.GetField <int>("ProductoTerminadoComposicionId"),
                            Volumen          = csvReader.GetField <int?>("Volumen"),
                            Unidades         = csvReader.GetField <int?>("Unidades"),
                            HistorialHuecoId = csvReader.GetField <int>("HistorialHuecoId"),
                            ProductoId       = csvReader.GetField <int>("ProductoId")
                        });
                    }
                    context.ProductosTerminadosComposiciones.AddOrUpdate(d => d.ProductoTerminadoComposicionId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "EstadosPedidos");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <EstadoPedido>().ToArray();
                    context.EstadosPedidos.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "EstadosEnvasados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = csvReader.GetRecords <EstadoEnvasado>().ToArray();
                    context.EstadosEnvasados.AddOrUpdate(d => d.Nombre, datos);
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "GruposProductosEnvasados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <GrupoProductoEnvasado>();
                    while (csvReader.Read())
                    {
                        // Alternativa a GrupoProductoEnvasadoMap
                        datos.Add(new GrupoProductoEnvasado()
                        {
                            GrupoProductoEnvasadoId = csvReader.GetField <int>("GrupoProductoEnvasadoId"),
                            Nombre      = csvReader.GetField <string>("Nombre"),
                            Descripcion = csvReader.GetField <string>("Descripcion")
                        });
                    }
                    context.GruposProductosEnvasados.AddOrUpdate(d => d.GrupoProductoEnvasadoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "TiposProductosEnvasados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <TipoProductoEnvasado>();
                    while (csvReader.Read())
                    {
                        datos.Add(new TipoProductoEnvasado()
                        {
                            TipoProductoEnvasadoId = csvReader.GetField <int>("TipoProductoEnvasadoId"),
                            Nombre           = csvReader.GetField <string>("Nombre"),
                            Descripcion      = csvReader.GetField <string>("Descripcion"),
                            MedidoEnVolumen  = csvReader.GetField <bool>("MedidoEnVolumen"),
                            MedidoEnUnidades = csvReader.GetField <bool>("MedidoEnUnidades"),
                            GrupoId          = csvReader.GetField <int>("GrupoId")
                        });
                    }
                    context.TiposProductosEnvasados.AddOrUpdate(d => d.TipoProductoEnvasadoId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "Picking");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <Picking>();
                    while (csvReader.Read())
                    {
                        datos.Add(new Picking()
                        {
                            PickingId       = csvReader.GetField <int>("PickingId"),
                            Nombre          = csvReader.GetField <string>("Nombre"),
                            VolumenTotal    = csvReader.GetField <double>("VolumenTotal"),
                            UnidadesTotales = csvReader.GetField <int>("UnidadesTotales")
                        });
                    }
                    context.Picking.AddOrUpdate(d => d.PickingId, datos.ToArray());
                }
            }
            context.SaveChanges();


            resourceName = String.Format(NOMBRE_CSV, "OrdenesEnvasados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <OrdenEnvasado>();
                    while (csvReader.Read())
                    {
                        // Alternativa a OrdenEnvasadoMap
                        datos.Add(new OrdenEnvasado()
                        {
                            OrdenEnvasadoId  = csvReader.GetField <int>("OrdenEnvasadoId"),
                            EstadoEnvasadoId = csvReader.GetField <int>("EstadoEnvasadoId"),
                            Descripcion      = csvReader.GetField <string>("Descripcion")
                        });
                    }
                    context.OrdenesEnvasados.AddOrUpdate(d => d.OrdenEnvasadoId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "ProductosEnvasados");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <ProductoEnvasado>();
                    while (csvReader.Read())
                    {
                        // Campos opcionales
                        csvReader.TryGetField <string>("Observaciones", out var observaciones);
                        observaciones = (observaciones == "") ? null : observaciones;

                        datos.Add(new ProductoEnvasado()
                        {
                            ProductoEnvasadoId     = csvReader.GetField <int>("ProductoEnvasadoId"),
                            Volumen                = csvReader.GetField <double?>("Volumen"),
                            Unidades               = csvReader.GetField <int?>("Unidades"),
                            TipoProductoEnvasadoId = csvReader.GetField <int>("TipoProductoEnvasadoId"),
                            OrdenId                = csvReader.GetField <int>("OrdenId"),
                            PickingId              = csvReader.GetField <int>("PickingId"),
                            Observaciones          = observaciones
                        });
                    }
                    context.ProductosEnvasados.AddOrUpdate(d => d.ProductoEnvasadoId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "ProductosEnvasadosComposiciones");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <ProductoEnvasadoComposicion>();
                    while (csvReader.Read())
                    {
                        // Alternativa a ProductoTerminadoComposicionMap
                        datos.Add(new ProductoEnvasadoComposicion()
                        {
                            ProductoEnvasadoComposicionId = csvReader.GetField <int>("ProductoEnvasadoComposicionId"),
                            Volumen          = csvReader.GetField <int?>("Volumen"),
                            Unidades         = csvReader.GetField <int?>("Unidades"),
                            HistorialHuecoId = csvReader.GetField <int>("HistorialHuecoId"),
                            ProductoId       = csvReader.GetField <int>("ProductoId")
                        });
                    }
                    context.ProductosEnvasadosComposiciones.AddOrUpdate(d => d.ProductoEnvasadoComposicionId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "PedidosCabeceras");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <PedidoCabecera>();
                    while (csvReader.Read())
                    {
                        datos.Add(new PedidoCabecera()
                        {
                            PedidoCabeceraId = csvReader.GetField <int>("PedidoCabeceraId"),
                            FechaPedido      = csvReader.GetField <DateTime>("FechaPedido"),
                            EstadoId         = csvReader.GetField <int>("EstadoId"),
                            ClienteId        = csvReader.GetField <int>("ClienteId")
                        });
                    }
                    context.PedidosCabeceras.AddOrUpdate(d => d.PedidoCabeceraId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "PedidosLineas");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <PedidoLinea>();
                    while (csvReader.Read())
                    {
                        datos.Add(new PedidoLinea()
                        {
                            PedidoLineaId          = csvReader.GetField <int>("PedidoLineaId"),
                            Volumen                = csvReader.GetField <double?>("Volumen"),
                            Unidades               = csvReader.GetField <int?>("Unidades"),
                            VolumenPreparado       = csvReader.GetField <double?>("VolumenPreparado"),
                            UnidadesPreparadas     = csvReader.GetField <int?>("UnidadesPreparadas"),
                            PedidoCabeceraId       = csvReader.GetField <int>("PedidoCabeceraId"),
                            TipoProductoEnvasadoId = csvReader.GetField <int>("TipoProductoEnvasadoId")
                        });
                    }
                    context.PedidosLineas.AddOrUpdate(d => d.PedidoLineaId, datos.ToArray());
                }
            }
            context.SaveChanges();

            resourceName = String.Format(NOMBRE_CSV, "PedidosDetalles");
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    CsvReader csvReader = new CsvReader(reader, csvConfig);
                    var       datos     = new List <PedidoDetalle>();
                    while (csvReader.Read())
                    {
                        datos.Add(new PedidoDetalle()
                        {
                            PedidoDetalleId    = csvReader.GetField <int>("PedidoDetalleId"),
                            Volumen            = csvReader.GetField <double?>("Volumen"),
                            Unidades           = csvReader.GetField <int?>("Unidades"),
                            PedidoLineaId      = csvReader.GetField <int>("PedidoLineaId"),
                            ProductoEnvasadoId = csvReader.GetField <int>("ProductoEnvasadoId")
                        });
                    }
                    context.PedidosDetalles.AddOrUpdate(d => d.PedidoDetalleId, datos.ToArray());
                }
            }
            context.SaveChanges();
        }
Ejemplo n.º 7
0
        private void InsertarDatos(Modelos.BiomasaEUPTContext context)
        {
            context.TiposUsuarios.AddOrUpdate(
                tu => tu.Nombre,
                new TipoUsuario()
            {
                Nombre      = "Super Administrador",
                Descripcion = "Super usuario con máximos privilegios"
            },
                new TipoUsuario()
            {
                Nombre      = "Administrador",
                Descripcion = "Usuario con máximos privilegios"
            },
                new TipoUsuario()
            {
                Nombre      = "Administrativo",
                Descripcion = "Encargado de los clientes y proveedores"
            },
                new TipoUsuario()
            {
                Nombre      = "Técnico",
                Descripcion = "Encargado de las recepciones, elaboraciones y ventas"
            });
            context.SaveChanges();

            context.Permisos.AddOrUpdate(
                p => p.PermisoId,
                new Permiso()
            {
                PermisoId = 1,
                Tab       = Tab.Permisos,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 2,
                Tab       = Tab.Usuarios,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 3,
                Tab       = Tab.Clientes,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 4,
                Tab       = Tab.Proveedores,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 5,
                Tab       = Tab.Recepciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 6,
                Tab       = Tab.Elaboraciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 7,
                Tab       = Tab.Ventas,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 8,
                Tab       = Tab.Trazabilidad,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 9,
                Tab       = Tab.Usuarios,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 10,
                Tab       = Tab.Clientes,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 11,
                Tab       = Tab.Proveedores,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 12,
                Tab       = Tab.Recepciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 13,
                Tab       = Tab.Elaboraciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 14,
                Tab       = Tab.Ventas,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 15,
                Tab       = Tab.Trazabilidad,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 16,
                Tab       = Tab.Clientes,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrativo").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 17,
                Tab       = Tab.Proveedores,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrativo").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 18,
                Tab       = Tab.Trazabilidad,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrativo").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 19,
                Tab       = Tab.Recepciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Técnico").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 20,
                Tab       = Tab.Elaboraciones,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Técnico").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 21,
                Tab       = Tab.Ventas,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Técnico").TipoUsuarioId
            },
                new Permiso()
            {
                PermisoId = 22,
                Tab       = Tab.Trazabilidad,
                TipoId    = context.TiposUsuarios.Local.Single(u => u.Nombre == "Técnico").TipoUsuarioId
            });
            context.SaveChanges();

            context.Usuarios.AddOrUpdate(
                u => u.Nombre,
                new Usuario()
            {
                Nombre     = "superadmin",
                Contrasena = ContrasenaHashing.ObtenerHashSHA256("superadmin"),
                Email      = "*****@*****.**",
                TipoId     = context.TiposUsuarios.Local.Single(u => u.Nombre == "Super Administrador").TipoUsuarioId
            },
                new Usuario()
            {
                Nombre     = "admin",
                Contrasena = ContrasenaHashing.ObtenerHashSHA256("admin"),
                Email      = "*****@*****.**",
                TipoId     = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrador").TipoUsuarioId
            },
                new Usuario()
            {
                Nombre     = "efonte",
                Contrasena = ContrasenaHashing.ObtenerHashSHA256("efonte"),
                Email      = "*****@*****.**",
                TipoId     = context.TiposUsuarios.Local.Single(u => u.Nombre == "Administrativo").TipoUsuarioId
            },
                new Usuario()
            {
                Nombre     = "jbielsa",
                Contrasena = ContrasenaHashing.ObtenerHashSHA256("jbielsa"),
                Email      = "*****@*****.**",
                TipoId     = context.TiposUsuarios.Local.Single(u => u.Nombre == "Técnico").TipoUsuarioId
            });
            context.SaveChanges();

            context.TiposProveedores.AddOrUpdate(
                tp => tp.Nombre,
                new TipoProveedor()
            {
                Nombre      = "Ecológico",
                Descripcion = "Provee de madera ecológica"
            },
                new TipoProveedor()
            {
                Nombre      = "Puntual",
                Descripcion = "No tarda en servir"
            });
            context.SaveChanges();

            context.GruposClientes.AddOrUpdate(
                gc => gc.Nombre,
                new GrupoCliente()
            {
                Nombre      = "GrupoCliente 1",
                Descripcion = "Este es el GrupoCliente 1"
            },
                new GrupoCliente()
            {
                Nombre      = "GrupoCliente 2",
                Descripcion = "Este es el GrupoCliente 2"
            });
            context.SaveChanges();

            context.TiposClientes.AddOrUpdate(
                tc => tc.Nombre,
                new TipoCliente()
            {
                Nombre      = "TipoCliente 1",
                Descripcion = "Este es el TipoCliente 1"
            },
                new TipoCliente()
            {
                Nombre      = "TipoCliente 2",
                Descripcion = "Este es el TipoCliente 2"
            });
            context.SaveChanges();

            context.Paises.AddOrUpdate(
                p => p.Codigo,
                new Pais()
            {
                Codigo = "ES",
                Nombre = "España"
            },
                new Pais()
            {
                Codigo = "FR",
                Nombre = "Francia"
            });
            context.SaveChanges();

            context.Comunidades.AddOrUpdate(
                c => c.Codigo,
                new Comunidad()
            {
                Codigo = "ES-AR",
                Nombre = "Aragón",
                PaisId = context.Paises.Local.Single(p => p.Codigo == "ES").PaisId
            },
                new Comunidad()
            {
                Codigo = "ES-VC",
                Nombre = "Comunidad Valenciana",
                PaisId = context.Paises.Local.Single(p => p.Codigo == "ES").PaisId
            },
                new Comunidad()
            {
                Codigo = "FR-11",
                Nombre = "Île-de-France",
                PaisId = context.Paises.Local.Single(p => p.Codigo == "FR").PaisId
            },
                new Comunidad()
            {
                Codigo = "ES-CL",
                Nombre = "Castilla y León",
                PaisId = context.Paises.Local.Single(p => p.Codigo == "ES").PaisId
            });
            context.SaveChanges();

            context.Provincias.AddOrUpdate(
                p => p.Codigo,
                new Provincia()
            {
                Codigo      = "ES-CS",
                Nombre      = "Castellón",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "ES-VC").ComunidadId
            },
                new Provincia()
            {
                Codigo      = "FR-75",
                Nombre      = "París",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "FR-11").ComunidadId
            },
                new Provincia()
            {
                Codigo      = "ES-TE",
                Nombre      = "Teruel",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "ES-AR").ComunidadId
            },
                new Provincia()
            {
                Codigo      = "ES-V",
                Nombre      = "Valencia",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "ES-VC").ComunidadId
            },
                new Provincia()
            {
                Codigo      = "ES-Z",
                Nombre      = "Zaragoza",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "ES-AR").ComunidadId
            },
                new Provincia()
            {
                Codigo      = "ES-SA",
                Nombre      = "Salamanca",
                ComunidadId = context.Comunidades.Local.Single(c => c.Codigo == "ES-CL").ComunidadId
            });
            context.SaveChanges();

            context.Municipios.AddOrUpdate(
                m => m.CodigoPostal,
                new Municipio()
            {
                CodigoPostal = "44500",
                Nombre       = "Andorra",
                Latitud      = "40.9766",
                Longitud     = "-0.4472",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-TE").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "44600",
                Nombre       = "Alcañiz",
                Latitud      = "41.05",
                Longitud     = "-0.1333",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-TE").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "12449",
                Nombre       = "Benafer",
                Latitud      = "39.9333",
                Longitud     = "-0.5667",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-CS").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "46100",
                Nombre       = "Burjassot",
                Latitud      = "39.5167",
                Longitud     = "-0.4167",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-V").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "46176",
                Nombre       = "Chelva",
                Latitud      = "39.7493",
                Longitud     = "-0.9968",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-V").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "50376",
                Nombre       = "Cubel",
                Latitud      = "41.096",
                Longitud     = "-1.6373",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-Z").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "12122",
                Nombre       = "Figueroles",
                Latitud      = "40.1167",
                Longitud     = "-0.2333",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-CS").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "75000",
                Nombre       = "Paris",
                Latitud      = "48.8534",
                Longitud     = "2.3488",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "FR-75").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "75020",
                Nombre       = "Paris",
                Latitud      = "48.8534",
                Longitud     = "2.3488",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "FR-75").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "44003",
                Nombre       = "Teruel",
                Latitud      = "40.3456",
                Longitud     = "-1.1065",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-TE").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "50580",
                Nombre       = "Vera De Moncayo",
                Latitud      = "41.824",
                Longitud     = "-1.688",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-Z").ProvinciaId
            },
                new Municipio()
            {
                CodigoPostal = "37700",
                Nombre       = "Béjar",
                Latitud      = "40.1167",
                Longitud     = "-0.2333",
                ProvinciaId  = context.Provincias.Local.Single(p => p.Codigo == "ES-SA").ProvinciaId
            });
            context.SaveChanges();

            context.Clientes.AddOrUpdate(
                c => c.RazonSocial,
                new Cliente()
            {
                RazonSocial = "Justo Madera, S.L.",
                Nif         = "B-44010101",
                Email       = "*****@*****.**",
                TipoId      = context.TiposClientes.Local.Single(tc => tc.Nombre == "TipoCliente 1").TipoClienteId,
                GrupoId     = context.GruposClientes.Local.Single(gc => gc.Nombre == "GrupoCliente 1").GrupoClienteId,
                MunicipioId = context.Municipios.Local.Single(gc => gc.CodigoPostal == "44003").MunicipioId,
                Calle       = "Ctra. Alcañiz, 60"
            },
                new Cliente()
            {
                RazonSocial = "BinMaderas, S.L.",
                Nif         = "B-50010101",
                Email       = "*****@*****.**",
                TipoId      = context.TiposClientes.Local.Single(tc => tc.Nombre == "TipoCliente 1").TipoClienteId,
                GrupoId     = context.GruposClientes.Local.Single(gc => gc.Nombre == "GrupoCliente 2").GrupoClienteId,
                MunicipioId = context.Municipios.Local.Single(gc => gc.CodigoPostal == "44600").MunicipioId,
                Calle       = "Calle Ábabol, 12"
            });
            context.SaveChanges();

            context.Proveedores.AddOrUpdate(
                p => p.RazonSocial,
                new Proveedor()
            {
                RazonSocial = "Maderas Gami, S.L.",
                Nif         = "B-37381563",
                Email       = "*****@*****.**",
                TipoId      = context.TiposProveedores.Local.Single(tp => tp.Nombre == "Ecológico").TipoProveedorId,
                MunicipioId = context.Municipios.Local.Single(gc => gc.CodigoPostal == "37700").MunicipioId,
                Calle       = "Paseo Santa Ana, 10"
            },
                new Proveedor()
            {
                RazonSocial = "J Gorbe, S.L.",
                Nif         = "B-44122562",
                Email       = "*****@*****.**",
                TipoId      = context.TiposProveedores.Local.Single(tp => tp.Nombre == "Puntual").TipoProveedorId,
                MunicipioId = context.Municipios.Local.Single(gc => gc.CodigoPostal == "44003").MunicipioId,
                Calle       = "Polígono La Paz, 92"
            });
            context.SaveChanges();

            context.EstadosRecepciones.AddOrUpdate(
                sr => sr.Nombre,
                new EstadoRecepcion()
            {
                Nombre      = "Disponible",
                Descripcion = "Las materias primas aún no se ha descargado"
            },
                new EstadoRecepcion()
            {
                Nombre      = "Aceptada",
                Descripcion = "Las materias primas se han descargado"
            });
            context.SaveChanges();

            context.SitiosRecepciones.AddOrUpdate(
                sr => sr.Nombre,
                new SitioRecepcion()
            {
                Nombre      = "Sitio A",
                Descripcion = "Este es el Sitio A"
            },
                new SitioRecepcion()
            {
                Nombre      = "Sitio B",
                Descripcion = "Este es el Sitio A"
            });
            context.SaveChanges();

            context.HuecosRecepciones.AddOrUpdate(
                hr => hr.Nombre,
                new HuecoRecepcion()
            {
                Nombre          = "A01",
                UnidadesTotales = 30,
                VolumenTotal    = 20,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio A").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "A02",
                UnidadesTotales = 25,
                VolumenTotal    = 15,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio A").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "A03",
                UnidadesTotales = 70,
                VolumenTotal    = 50,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio A").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "A04",
                UnidadesTotales = 40,
                VolumenTotal    = 50,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio A").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "A05",
                UnidadesTotales = 60,
                VolumenTotal    = 50,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio A").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "B01",
                UnidadesTotales = 10,
                VolumenTotal    = 5,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio B").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "B02",
                UnidadesTotales = 60,
                VolumenTotal    = 50,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio B").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "B03",
                UnidadesTotales = 50,
                VolumenTotal    = 40,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio B").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "B04",
                UnidadesTotales = 60,
                VolumenTotal    = 50,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio B").SitioRecepcionId
            },
                new HuecoRecepcion()
            {
                Nombre          = "B05",
                UnidadesTotales = 80,
                VolumenTotal    = 40,
                SitioId         = context.SitiosRecepciones.Local.Single(sr => sr.Nombre == "Sitio B").SitioRecepcionId
            });
            context.SaveChanges();

            context.Procedencias.AddOrUpdate(
                tc => tc.Nombre,
                new Procedencia()
            {
                Nombre      = "Monte Soria",
                Descripcion = "Lado norte"
            },
                new Procedencia()
            {
                Nombre      = "Dehesa del Moncayo",
                Descripcion = "Lado sur"
            });
            context.SaveChanges();

            context.Recepciones.AddOrUpdate(
                rc => rc.NumeroAlbaran,
                new Recepcion()
            {
                NumeroAlbaran  = "A-0100B",
                FechaRecepcion = new DateTime(2017, 02, 10, 10, 15, 0),
                ProveedorId    = context.Proveedores.Local.Single(p => p.ProveedorId == 1).ProveedorId,
                EstadoId       = context.EstadosRecepciones.Local.Single(e => e.EstadoRecepcionId == 1).EstadoRecepcionId
            },
                new Recepcion()
            {
                NumeroAlbaran  = "A-010VB",
                FechaRecepcion = new DateTime(2017, 01, 20, 12, 16, 0),
                ProveedorId    = context.Proveedores.Local.Single(p => p.ProveedorId == 2).ProveedorId,
                EstadoId       = context.EstadosRecepciones.Local.Single(e => e.EstadoRecepcionId == 2).EstadoRecepcionId
            });
            context.SaveChanges();

            context.GruposMateriasPrimas.AddOrUpdate(
                gmp => gmp.Nombre,
                new GrupoMateriaPrima()
            {
                Nombre      = "Ramas",
                Descripcion = "Ramas de árboles"
            },
                new GrupoMateriaPrima()
            {
                Nombre      = "Troncos",
                Descripcion = "Troncos de árboles"
            });
            context.SaveChanges();


            context.TiposMateriasPrimas.AddOrUpdate(
                tmp => tmp.Nombre,
                new TipoMateriaPrima()
            {
                Nombre           = "Ramas de abeto",
                Descripcion      = "Abetos de 300 años",
                MedidoEnUnidades = true,
                GrupoId          = context.GruposMateriasPrimas.Local.Single(gc => gc.Nombre == "Ramas").GrupoMateriaPrimaId
            },
                new TipoMateriaPrima()
            {
                Nombre           = "Tronco de roble",
                Descripcion      = "Robles de 5 m altura",
                MedidoEnUnidades = true,
                GrupoId          = context.GruposMateriasPrimas.Local.Single(gc => gc.Nombre == "Troncos").GrupoMateriaPrimaId
            });
            context.SaveChanges();


            context.MateriasPrimas.AddOrUpdate(
                mp => mp.MateriaPrimaId,
                new MateriaPrima()
            {
                MateriaPrimaId = 1,
                TipoId         = context.TiposMateriasPrimas.Local.Single(tmp => tmp.Nombre == "Ramas de abeto").TipoMateriaPrimaId,
                Unidades       = 35,
                Observaciones  = "En buen estado",
                RecepcionId    = context.Recepciones.Local.Single(r => r.NumeroAlbaran == "A-0100B").RecepcionId,
                ProcedenciaId  = context.Procedencias.Local.Single(p => p.Nombre == "Monte Soria").ProcedenciaId,
            },
                new MateriaPrima()
            {
                MateriaPrimaId = 2,
                TipoId         = context.TiposMateriasPrimas.Local.Single(tmp => tmp.Nombre == "Ramas de abeto").TipoMateriaPrimaId,
                Unidades       = 107,
                Observaciones  = "Buena conservación",
                RecepcionId    = context.Recepciones.Local.Single(r => r.NumeroAlbaran == "A-0100B").RecepcionId,
                ProcedenciaId  = context.Procedencias.Local.Single(p => p.Nombre == "Monte Soria").ProcedenciaId,
            },
                new MateriaPrima()
            {
                MateriaPrimaId = 3,
                TipoId         = context.TiposMateriasPrimas.Local.Single(tmp => tmp.Nombre == "Tronco de roble").TipoMateriaPrimaId,
                Unidades       = 48,
                Observaciones  = "Dura y pesada",
                RecepcionId    = context.Recepciones.Local.Single(r => r.NumeroAlbaran == "A-010VB").RecepcionId,
                ProcedenciaId  = context.Procedencias.Local.Single(p => p.Nombre == "Dehesa del Moncayo").ProcedenciaId,
            });
            context.SaveChanges();

            context.HistorialHuecosRecepciones.AddOrUpdate(
                hhr => hhr.HistorialHuecoRecepcionId,
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 1,
                Unidades         = 30,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000001").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "A01").HuecoRecepcionId
            },
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 2,
                Unidades         = 5,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000001").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "B01").HuecoRecepcionId
            },
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 3,
                Unidades         = 25,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000002").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "A02").HuecoRecepcionId
            },
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 4,
                Unidades         = 50,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000002").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "B03").HuecoRecepcionId
            },
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 5,
                Unidades         = 32,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000002").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "B04").HuecoRecepcionId
            },
                new HistorialHuecoRecepcion()
            {
                HistorialHuecoRecepcionId = 6,
                Unidades         = 48,
                MateriaPrimaId   = context.MateriasPrimas.Local.Single(mp => mp.Codigo == "1000000003").MateriaPrimaId,
                HuecoRecepcionId = context.HuecosRecepciones.Local.Single(hr => hr.Nombre == "B02").HuecoRecepcionId
            });
            context.SaveChanges();

            context.EstadosElaboraciones.AddOrUpdate(
                ee => ee.Nombre,
                new EstadoElaboracion()
            {
                Nombre      = "Nueva",
                Descripcion = "Se ha añadido la cantidad de cada producto terminado a elaborar"
            },
                new EstadoElaboracion()
            {
                Nombre      = "Procesando",
                Descripcion = "Los productos terminados se están elaborando"
            },
                new EstadoElaboracion()
            {
                Nombre      = "Finalizada",
                Descripcion = "Los productos terminados se han elaborado"
            });
            context.SaveChanges();

            context.GruposProductosTerminados.AddOrUpdate(
                gpt => gpt.Nombre,
                new GrupoProductoTerminado()
            {
                Nombre      = "Pellets",
                Descripcion = "Pellet de muy buena calidad"
            },
                new GrupoProductoTerminado()
            {
                Nombre      = "Tablones",
                Descripcion = "Tablón alargado"
            });
            context.SaveChanges();

            context.TiposProductosTerminados.AddOrUpdate(
                tpt => tpt.Nombre,
                new TipoProductoTerminado()
            {
                Nombre          = "Pellet abeto",
                Tamano          = "0.75",
                Humedad         = 75,
                MedidoEnVolumen = true,
                GrupoId         = context.GruposProductosTerminados.Local.Single(gi => gi.Nombre == "Pellets").GrupoProductoTerminadoId
            },
                new TipoProductoTerminado()
            {
                Nombre           = "Tablón roble",
                Tamano           = "0.80",
                Humedad          = 85,
                MedidoEnUnidades = true,
                GrupoId          = context.GruposProductosTerminados.Local.Single(gi => gi.Nombre == "Tablones").GrupoProductoTerminadoId
            });
            context.SaveChanges();

            context.OrdenesElaboraciones.AddOrUpdate(
                oe => oe.OrdenElaboracionId,
                new OrdenElaboracion()
            {
                OrdenElaboracionId  = 1,
                Descripcion         = "Fallo de máquina",
                EstadoElaboracionId = context.EstadosElaboraciones.Local.Single(ee => ee.Nombre == "Procesando").EstadoElaboracionId
            },
                new OrdenElaboracion()
            {
                OrdenElaboracionId  = 2,
                Descripcion         = "Según lo previsto",
                EstadoElaboracionId = context.EstadosElaboraciones.Local.Single(ee => ee.Nombre == "Finalizada").EstadoElaboracionId
            });
            context.SaveChanges();

            context.ProductosTerminados.AddOrUpdate(
                pt => pt.ProductoTerminadoId,
                new ProductoTerminado()
            {
                ProductoTerminadoId = 1,
                Unidades            = 40,
                Observaciones       = "Baja humedad",
                TipoId  = context.TiposProductosTerminados.Local.Single(ti => ti.Nombre == "Tablón roble").TipoProductoTerminadoId,
                OrdenId = context.OrdenesElaboraciones.Local.Single(oe => oe.OrdenElaboracionId == 1).OrdenElaboracionId
            },
                new ProductoTerminado()
            {
                ProductoTerminadoId = 2,
                Volumen             = 10,
                Observaciones       = "Muy buena calidad",
                TipoId  = context.TiposProductosTerminados.Local.Single(ti => ti.Nombre == "Pellet abeto").TipoProductoTerminadoId,
                OrdenId = context.OrdenesElaboraciones.Local.Single(oe => oe.OrdenElaboracionId == 1).OrdenElaboracionId
            });
            context.SaveChanges();

            context.ProductosTerminadosComposiciones.AddOrUpdate(
                ptc => ptc.ProductoTerminadoComposicionId,
                new ProductoTerminadoComposicion()
            {
                ProductoTerminadoComposicionId = 1,
                Unidades         = 30,
                HistorialHuecoId = context.HistorialHuecosRecepciones.Local.Single(hh => hh.HistorialHuecoRecepcionId == 1).HistorialHuecoRecepcionId,
                ProductoId       = context.ProductosTerminados.Local.Single(p => p.Codigo == "2000000001").ProductoTerminadoId
            },
                new ProductoTerminadoComposicion()
            {
                ProductoTerminadoComposicionId = 2,
                Unidades         = 15,
                HistorialHuecoId = context.HistorialHuecosRecepciones.Local.Single(hh => hh.HistorialHuecoRecepcionId == 3).HistorialHuecoRecepcionId,
                ProductoId       = context.ProductosTerminados.Local.Single(p => p.Codigo == "2000000001").ProductoTerminadoId
            },
                new ProductoTerminadoComposicion()
            {
                ProductoTerminadoComposicionId = 3,
                Unidades         = 10,
                HistorialHuecoId = context.HistorialHuecosRecepciones.Local.Single(hh => hh.HistorialHuecoRecepcionId == 6).HistorialHuecoRecepcionId,
                ProductoId       = context.ProductosTerminados.Local.Single(p => p.Codigo == "2000000001").ProductoTerminadoId
            },
                new ProductoTerminadoComposicion()
            {
                ProductoTerminadoComposicionId = 4,
                Unidades         = 5,
                HistorialHuecoId = context.HistorialHuecosRecepciones.Local.Single(hh => hh.HistorialHuecoRecepcionId == 3).HistorialHuecoRecepcionId,
                ProductoId       = context.ProductosTerminados.Local.Single(p => p.Codigo == "2000000002").ProductoTerminadoId
            });
            context.SaveChanges();

            context.SitiosAlmacenajes.AddOrUpdate(
                sa => sa.Nombre,
                new SitioAlmacenaje()
            {
                Nombre      = "Sitio A",
                Descripcion = "Este es el Sitio A"
            },
                new SitioAlmacenaje()
            {
                Nombre      = "Sitio B",
                Descripcion = "Este es el Sitio A"
            });
            context.SaveChanges();

            context.HuecosAlmacenajes.AddOrUpdate(
                ha => ha.Nombre,
                new HuecoAlmacenaje()
            {
                Nombre          = "A01",
                UnidadesTotales = 30,
                VolumenTotal    = 20,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio A").SitioAlmacenajeId
            },
                new HuecoAlmacenaje()
            {
                Nombre          = "A02",
                UnidadesTotales = 25,
                VolumenTotal    = 15,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio A").SitioAlmacenajeId
            },
                new HuecoAlmacenaje()
            {
                Nombre          = "A03",
                UnidadesTotales = 60,
                VolumenTotal    = 50,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio A").SitioAlmacenajeId
            },
                new HuecoAlmacenaje()
            {
                Nombre          = "B01",
                UnidadesTotales = 10,
                VolumenTotal    = 5,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio B").SitioAlmacenajeId
            },
                new HuecoAlmacenaje()
            {
                Nombre          = "B02",
                UnidadesTotales = 60,
                VolumenTotal    = 50,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio B").SitioAlmacenajeId
            },
                new HuecoAlmacenaje()
            {
                Nombre          = "B03",
                UnidadesTotales = 50,
                VolumenTotal    = 40,
                SitioId         = context.SitiosAlmacenajes.Local.Single(sa => sa.Nombre == "Sitio B").SitioAlmacenajeId
            });
            context.SaveChanges();

            context.HistorialHuecosAlmacenajes.AddOrUpdate(
                hha => hha.HistorialHuecoAlmacenajeId,
                new HistorialHuecoAlmacenaje()
            {
                HistorialHuecoAlmacenajeId = 1,
                Unidades            = 25,
                ProductoTerminadoId = context.ProductosTerminados.Local.Single(pt => pt.Codigo == "2000000001").ProductoTerminadoId,
                HuecoAlmacenajeId   = context.HuecosAlmacenajes.Local.Single(ha => ha.Nombre == "A02").HuecoAlmacenajeId
            },
                new HistorialHuecoAlmacenaje()
            {
                HistorialHuecoAlmacenajeId = 2,
                Unidades            = 10,
                ProductoTerminadoId = context.ProductosTerminados.Local.Single(pt => pt.Codigo == "2000000001").ProductoTerminadoId,
                HuecoAlmacenajeId   = context.HuecosAlmacenajes.Local.Single(ha => ha.Nombre == "B01").HuecoAlmacenajeId
            },
                new HistorialHuecoAlmacenaje()
            {
                HistorialHuecoAlmacenajeId = 3,
                Unidades            = 5,
                ProductoTerminadoId = context.ProductosTerminados.Local.Single(pt => pt.Codigo == "2000000001").ProductoTerminadoId,
                HuecoAlmacenajeId   = context.HuecosAlmacenajes.Local.Single(ha => ha.Nombre == "B02").HuecoAlmacenajeId
            },
                new HistorialHuecoAlmacenaje()
            {
                HistorialHuecoAlmacenajeId = 4,
                Volumen             = 10,
                ProductoTerminadoId = context.ProductosTerminados.Local.Single(pt => pt.Codigo == "2000000002").ProductoTerminadoId,
                HuecoAlmacenajeId   = context.HuecosAlmacenajes.Local.Single(ha => ha.Nombre == "B03").HuecoAlmacenajeId
            });
            context.SaveChanges();

            context.EstadosPedidos.AddOrUpdate(
                ep => ep.Nombre,
                new EstadoPedido()
            {
                Nombre      = "Nuevo",
                Descripcion = "Cuando un pedido nuevo se realiza su estado podría estar pendiente."
            },
                new EstadoPedido()
            {
                Nombre      = "Preparar",
                Descripcion = "Una vez el pago ha sido confirmado el estado podría ser puesto a preparando."
            },
                new EstadoPedido()
            {
                Nombre      = "Facturar",
                Descripcion = "Una vez el pago ha sido confirmado el estado podría ser puesto a facturar."
            },
                new EstadoPedido()
            {
                Nombre      = "Finalizado",
                Descripcion = "Si el pedido ha llegado a su destino puede ser puesto como completo o terminado."
            });
            context.SaveChanges();

            context.Picking.AddOrUpdate(
                sr => sr.Nombre,
                new Picking()
            {
                Nombre          = "P01",
                VolumenTotal    = 20,
                VolumenRestante = 15
            },
                new Picking()
            {
                Nombre          = "P02",
                VolumenTotal    = 45,
                VolumenRestante = 10
            });
            context.SaveChanges();

            context.TiposProductosEnvasados.AddOrUpdate(
                tpe => tpe.Nombre,
                new TipoProductoEnvasado()
            {
                Nombre          = "Saco",
                Descripcion     = "Saco medido en metros cúbicos.",
                MedidoEnVolumen = true
            },
                new TipoProductoEnvasado()
            {
                Nombre          = "Saca",
                Descripcion     = "Saca medida en metros cúbicos.",
                MedidoEnVolumen = true
            },
                new TipoProductoEnvasado()
            {
                Nombre           = "Paquete 10",
                Descripcion      = "Paquete con 10 unidades.",
                MedidoEnUnidades = true
            },
                new TipoProductoEnvasado()
            {
                Nombre           = "Paquete 20",
                Descripcion      = "Paquete con 20 unidades.",
                MedidoEnUnidades = true
            });
            context.SaveChanges();
        }