public UsuarioViewModel Update(UsuarioViewModel obj)
        {
            var     usuarioEmpresarioConectado = entities.Empresarios.Where(e => e.IdClientePersonaEmpresa == Utilidades.GetCurrentUser().ClienteID).Select(e => e.Id).First();
            Cliente entity = new Cliente();

            entity                         = entities.Clientes.Where(e => e.Id == obj.IdClietne).FirstOrDefault();
            entity.DateChanged             = DateTime.Now;
            entity.IdChangedby             = usuarioEmpresarioConectado;
            entity.Id                      = obj.IdClietne;
            entity.TipoPersona_id          = obj.TipoPersona_id;
            entity.TipoDocumento_id        = obj.TipoDocumento_id;
            entity.Identificacion          = obj.Identificacion;
            entity.PrimerNombreRazonSocial = obj.PrimerNombres;
            entity.SegundoNombre           = obj.SegundoNombres;
            entity.PrimerApellido          = obj.PrimerApellido;
            entity.SegundoApellido         = obj.SegundoApellido;
            entity.FechaNacimiento         = obj.FechaNacimiento;
            entity.Genero_id               = obj.Genero_id;
            entity.Email                   = obj.Email;
            entity.Celular                 = obj.Celular;
            entity.TelefonoCasa            = obj.TelefonoCasa;
            entity.TelefonoOficina         = obj.TelefonoOficina;
            entity.JornadaEntrega          = obj.JornadaEntrega;
            entity.IsEmpresa               = obj.EsEmpresa;
            entity.Imagen                  = obj.imagen == null ? entity.Imagen : obj.imagen;
            entity.Activo                  = true;
            entities.SaveChanges();
            obj.Id = entity.Id;
            var idCliente = obj.Id;
            var records   = entities.DireccionesClientes.Where(e => e.Cliente_id == obj.Id).ToList();
            var nuevos    = obj.Direcciones.Where(c => c.Id < 0).ToList();
            //Borrado Direcciones
            var borrar = (from c in records
                          where obj.Direcciones.FirstOrDefault(r => r.Id == c.Id) == null
                          select c).ToList();

            var match = (from c in records
                         from d in obj.Direcciones
                         where c.Id == d.Id
                         select new
            {
                Record = c,
                Memoria = d
            }).ToList();

            foreach (var item in nuevos)
            {
                entities.Add(new DireccionesCliente
                {
                    Ubicacion    = item.Direccion,
                    CodigoPostal = item.CodigoPostal,
                    Ciudad_id    = item.Ciudad_id,
                    DateCreated  = DateTime.Now,
                    Cliente_id   = idCliente,
                    IdCreatorby  = usuarioEmpresarioConectado,
                    Activo       = true
                });
            }

            foreach (var item in borrar)
            {
                entities.Delete(item);
            }

            foreach (var item in match)
            {
                item.Record.Ubicacion    = item.Memoria.Direccion;
                item.Record.CodigoPostal = item.Memoria.CodigoPostal;
                item.Record.Ciudad_id    = item.Memoria.Ciudad_id;
            }

            var entityUser = new UsuariosEmpresario();

            entityUser = entities.UsuariosEmpresarios.Where(e => e.Id == obj.Id).FirstOrDefault();
            entityUser.IdClientePersonaEmpresa = idCliente;
            entityUser.Nombre      = obj.Usuario;
            entityUser.Email       = obj.Email;
            entityUser.Contrasena  = obj.Password == null ? entityUser.Contrasena : Utilidades.Encrypt(obj.Password);
            entityUser.IdChangedby = usuarioEmpresarioConectado;
            entityUser.DateChanged = DateTime.Now;
            entityUser.Activo      = true;
            entities.Add(entityUser);
            entities.SaveChanges();
            var usuarioEmpresario        = entityUser.Id;
            var entityUserEmpresariorRol = new UsuarioEmpresasriosRol();

            entityUserEmpresariorRol = entities.UsuarioEmpresasriosRols.Where(e => e.Id == obj.Id).FirstOrDefault();
            entityUserEmpresariorRol.IdEmpresario         = usuarioEmpresarioConectado;
            entityUserEmpresariorRol.IdUsuarioEmpresarios = usuarioEmpresario;
            entityUserEmpresariorRol.IdRol       = 3;
            entityUserEmpresariorRol.DateChanged = DateTime.Now;
            entityUserEmpresariorRol.IdChangedby = usuarioEmpresarioConectado;
            entities.Add(entityUserEmpresariorRol);
            entities.SaveChanges();

            return(obj);
        }
        public UsuarioViewModel CreateFromCC(UsuarioViewModel obj)
        {
            var     usuarioEmpresarioConectado = entities.Empresarios.Where(e => e.IdClientePersonaEmpresa == Utilidades.GetCurrentUser().ClienteID).Select(e => e.Id).First();
            Cliente entity = new Cliente();

            entity        = entities.Clientes.Where(e => e.Id == obj.IdClietne).FirstOrDefault();
            entity.Id     = obj.IdClietne;
            entity.Imagen = obj.imagen == null ? entity.Imagen : obj.imagen;
            entity.Activo = true;
            entities.SaveChanges();
            obj.Id = entity.Id;
            var idCliente = obj.Id;
            var records   = entities.DireccionesClientes.Where(e => e.Cliente_id == obj.Id).ToList();
            var nuevos    = obj.Direcciones.Where(c => c.Id < 0).ToList();
            //Borrado Direcciones
            var borrar = (from c in records
                          where obj.Direcciones.FirstOrDefault(r => r.Id == c.Id) == null
                          select c).ToList();

            var match = (from c in records
                         from d in obj.Direcciones
                         where c.Id == d.Id
                         select new
            {
                Record = c,
                Memoria = d
            }).ToList();

            foreach (var item in nuevos)
            {
                entities.Add(new DireccionesCliente
                {
                    Ubicacion    = item.Direccion,
                    CodigoPostal = item.CodigoPostal,
                    Ciudad_id    = item.Ciudad_id,
                    DateCreated  = DateTime.Now,
                    Cliente_id   = idCliente,
                    IdCreatorby  = usuarioEmpresarioConectado,
                    Activo       = true
                });
            }

            foreach (var item in borrar)
            {
                entities.Delete(item);
            }

            foreach (var item in match)
            {
                item.Record.Ubicacion    = item.Memoria.Direccion;
                item.Record.CodigoPostal = item.Memoria.CodigoPostal;
                item.Record.Ciudad_id    = item.Memoria.Ciudad_id;
            }
            var entityUser = new UsuariosEmpresario();

            entityUser.IdClientePersonaEmpresa = idCliente;
            entityUser.Nombre      = obj.Usuario;
            entityUser.Email       = obj.Email;
            entityUser.Contrasena  = Utilidades.Encrypt(obj.Password);
            entityUser.IdCreatorby = usuarioEmpresarioConectado;
            entityUser.DateCreated = DateTime.Now;
            entityUser.Activo      = true;
            entities.Add(entityUser);
            entities.SaveChanges();
            var usuarioEmpresario        = entityUser.Id;
            var entityUserEmpresariorRol = new UsuarioEmpresasriosRol();

            entityUserEmpresariorRol.IdEmpresario         = usuarioEmpresarioConectado;
            entityUserEmpresariorRol.IdUsuarioEmpresarios = usuarioEmpresario;
            entityUserEmpresariorRol.IdRol       = 3;
            entityUserEmpresariorRol.DateCreated = DateTime.Now;
            entityUserEmpresariorRol.IdCreatorby = usuarioEmpresarioConectado;
            entities.Add(entityUserEmpresariorRol);
            entities.SaveChanges();
            return(obj);
        }
        //Actualizar Empresario
        public EmpresarioViewModel Update(EmpresarioViewModel obj)
        {
            try
            {
                Cliente entity = new Cliente();
                entity                  = entities.Clientes.Where(e => e.Id == obj.ClienteId).FirstOrDefault();
                entity.DateChanged      = obj.Auditoria.DateChanged;
                entity.IdChangedby      = obj.Auditoria.IdChangedby;
                entity.Id               = obj.ClienteId;
                entity.TipoPersona_id   = obj.TipoPersona_id;
                entity.TipoDocumento_id = obj.TipoDocumento_id;
                entity.Identificacion   = obj.Identificacion;
                if (obj.TipoDocumento_id == 2)
                {
                    entity.Digito = obj.Digito;
                    entity.PrimerNombreRazonSocial = obj.RazonSocial;
                }
                else
                {
                    entity.Imagen = obj.imagen != null? obj.imagen: null;
                }

                entity.Email           = obj.Email;
                entity.Celular         = obj.Celular;
                entity.TelefonoCasa    = obj.TelefonoCasa;
                entity.TelefonoOficina = obj.TelefonoOficina;
                entities.SaveChanges();
                obj.ClienteId = entity.Id;
                var records = entities.DireccionesClientes.Where(e => e.Cliente_id == obj.ClienteId).ToList();
                var nuevos  = obj.Direcciones.Where(c => c.Id < 0).ToList();
                //Borrado Direcciones
                var borrar = (from c in records
                              where obj.Direcciones.FirstOrDefault(r => r.Id == c.Id) == null
                              select c).ToList();
                var match = (from c in records
                             from d in obj.Direcciones
                             where c.Id == d.Id
                             select new
                {
                    Record = c,
                    Memoria = d
                }).ToList();

                foreach (var item in nuevos)
                {
                    entities.Add(new DireccionesCliente
                    {
                        Ubicacion    = item.Direccion,
                        CodigoPostal = item.CodigoPostal,
                        Ciudad_id    = item.Ciudad_id,
                        DateCreated  = obj.Auditoria.DateChanged,
                        Cliente_id   = obj.ClienteId,
                        IdCreatorby  = obj.Auditoria.IdChangedby,
                        Activo       = true
                    });
                }
                foreach (var item in borrar)
                {
                    entities.Delete(item);
                }
                foreach (var item in match)
                {
                    item.Record.Ubicacion    = item.Memoria.Direccion;
                    item.Record.CodigoPostal = item.Memoria.CodigoPostal;
                    item.Record.Ciudad_id    = item.Memoria.Ciudad_id;
                }
                entities.SaveChanges();
                Empresario entityEmpresario = new Empresario();
                entityEmpresario                              = entities.Empresarios.Where(e => e.Id == obj.EmpresarioId).FirstOrDefault();
                entityEmpresario.IdChangedby                  = obj.Auditoria.IdChangedby;
                entityEmpresario.DateChanged                  = obj.Auditoria.DateChanged;
                entityEmpresario.IdClientePersonaEmpresa      = obj.ClienteId;
                entityEmpresario.NumeroRegistroArtesEscenicas = obj.NumeroRegistroArtesEscenicas;
                entityEmpresario.NombreEstableciemiento       = obj.NombreEstablecimeinto;
                entityEmpresario.Pulet                        = obj.EmpresarioPulet;
                entityEmpresario.TipoDocumentoRL_id           = obj.EmpresarioTipoDocumento_idRL;
                entityEmpresario.IdentificacionRL             = obj.EmpresarioIdentificacionRL;
                entityEmpresario.NombreRL                     = obj.EmpresarioPrimerNombreRL;
                entityEmpresario.SegundoNombreRl              = obj.EmpresarioSegundoNombreRL;
                entityEmpresario.ApellidosRL                  = obj.EmpresarioPrimerApellidosRL;
                entityEmpresario.SegindoApellidoRL            = obj.EmpresarioSegundoApellidosRL;
                entityEmpresario.Sexo_idRL                    = obj.EmpresarioGenero_idRL;
                entityEmpresario.FechaNacimientoRL            = obj.EmpresarioFechaNacimientoRL;
                entityEmpresario.EmailRL                      = obj.EmpresarioEmailRL;
                entityEmpresario.CelularRL                    = obj.EmpresarioCelularRL;
                entityEmpresario.EmailNotificacion            = obj.EmpresarioEmailNotificacion;
                entityEmpresario.Activo                       = true;
                entities.SaveChanges();
                obj.EmpresarioId = entityEmpresario.Id;
                UsuariosEmpresario entityUsuario = new UsuariosEmpresario();
                entityUsuario = entities.UsuariosEmpresarios.Where(e => e.Id == obj.UsuarioEmpresarioId).FirstOrDefault();
                entityUsuario.IdClientePersonaEmpresa = obj.ClienteId;
                entityUsuario.Nombre      = obj.UserEmpresario;
                entityUsuario.Email       = obj.UserEmailEmpresario;
                entityUsuario.Contrasena  = obj.PasswordEmpresaio == null ? entityUsuario.Contrasena : Utilidades.Encrypt(obj.PasswordEmpresaio);
                entityUsuario.IdChangedby = obj.Auditoria.IdChangedby;
                entityUsuario.DateChanged = obj.Auditoria.DateChanged;
                entityUsuario.Activo      = true;
                entities.SaveChanges();
                obj.UsuarioEmpresarioId = entityUsuario.Id;
                return(obj);
            }
            catch (Exception err)
            {
                var message = err.Message;
                return(null);
            }
        }
        public UsuarioViewModel Create(UsuarioViewModel obj)
        {
            var usuarioEmpresarioConectado = entities.Empresarios.Where(e => e.IdClientePersonaEmpresa == Utilidades.GetCurrentUser().ClienteID).Select(e => e.Id).First();
            var verficadorCliente          = (from c in entities.Clientes
                                              where c.TipoDocumento_id == obj.TipoDocumento_id && c.Identificacion == obj.Identificacion
                                              select c).Count();

            if (verficadorCliente <= 0)
            {
                Cliente entity = new Cliente();
                entity.DateCreated = DateTime.Now;
                var usuarioConectado = Utilidades.GetCurrentUser().Id;
                entity.IdCreatorby = usuarioConectado;
                bool nuevo = false;
                entity.Id                      = obj.Id;
                entity.TipoPersona_id          = obj.TipoPersona_id;
                entity.TipoDocumento_id        = obj.TipoDocumento_id;
                entity.Identificacion          = obj.Identificacion;
                entity.PrimerNombreRazonSocial = obj.PrimerNombres;
                entity.SegundoNombre           = obj.SegundoNombres;
                entity.PrimerApellido          = obj.PrimerApellido;
                entity.SegundoApellido         = obj.SegundoApellido;
                entity.FechaNacimiento         = obj.FechaNacimiento;
                entity.Genero_id               = obj.Genero_id;
                entity.Email                   = obj.EmailPersona;
                entity.Celular                 = obj.Celular;
                entity.TelefonoCasa            = obj.TelefonoCasa;
                entity.TelefonoOficina         = obj.TelefonoOficina;
                entity.Imagen                  = obj.imagen;
                entity.IsEmpresa               = obj.EsEmpresa;
                entity.Activo                  = true;
                if (obj.Id == 0)
                {
                    nuevo = true;
                    entities.Add(entity);
                }
                entities.SaveChanges();
                obj.Id = entity.Id;
                var idCliente = obj.Id;

                if (nuevo)
                {
                    foreach (var item in obj.Direcciones)
                    {
                        entities.Add(new DireccionesCliente
                        {
                            Ubicacion    = item.Direccion,
                            CodigoPostal = item.CodigoPostal,
                            Ciudad_id    = item.Ciudad_id,
                            Cliente_id   = idCliente,
                            DateCreated  = DateTime.Now,
                            IdCreatorby  = usuarioConectado,
                            Latitud      = item.Latitud,
                            Longitud     = item.Longitud,
                            Activo       = true
                        });
                        entities.SaveChanges();
                    }
                }
                var entityUser = new UsuariosEmpresario();
                entityUser.IdClientePersonaEmpresa = idCliente;
                entityUser.Nombre      = obj.Usuario;
                entityUser.Email       = obj.Email;
                entityUser.Contrasena  = Utilidades.Encrypt(obj.Password);
                entityUser.IdCreatorby = usuarioConectado;
                entityUser.DateCreated = DateTime.Now;
                entityUser.Activo      = true;
                entities.Add(entityUser);
                entities.SaveChanges();

                var usuarioEmpresario        = entityUser.Id;
                var entityUserEmpresariorRol = new UsuarioEmpresasriosRol();
                entityUserEmpresariorRol.IdEmpresario         = usuarioEmpresarioConectado;
                entityUserEmpresariorRol.IdUsuarioEmpresarios = usuarioEmpresario;
                entityUserEmpresariorRol.IdRol       = 3;
                entityUserEmpresariorRol.DateCreated = DateTime.Now;
                entityUserEmpresariorRol.IdCreatorby = usuarioEmpresarioConectado;
                entities.Add(entityUserEmpresariorRol);
                entities.SaveChanges();
                return(obj);
            }
            else
            {
                obj = null;
                return(obj);
            }
        }
        //Guardar Empresario
        public EmpresarioViewModel SaveEmpresario(EmpresarioViewModel obj)
        {
            try
            {
                if (obj.ClienteId == 0)
                {
                    Cliente entity = new Cliente();
                    entity.DateCreated = obj.Auditoria.DateCreated;
                    entity.IdCreatorby = obj.Auditoria.IdCreatorby;
                    bool nuevo = false;
                    entity.Id               = obj.ClienteId;
                    entity.TipoPersona_id   = obj.TipoPersona_id;
                    entity.TipoDocumento_id = obj.TipoDocumento_id;
                    entity.Identificacion   = obj.Identificacion;
                    entity.SegundoNombre    = obj.SegundoNombres;
                    entity.PrimerApellido   = obj.PrimerApellido;
                    entity.SegundoApellido  = obj.SegundoApellido;
                    if (obj.TipoDocumento_id != 2)
                    {
                        entity.FechaNacimiento         = obj.FechaNacimiento.Value;
                        entity.Genero_id               = obj.Genero_id;
                        entity.PrimerNombreRazonSocial = obj.PrimerNombres;
                    }
                    else
                    {
                        entity.PrimerNombreRazonSocial = obj.RazonSocial;
                        entity.Digito = obj.Digito;
                    }
                    entity.Email           = obj.Email;
                    entity.Celular         = obj.Celular;
                    entity.TelefonoCasa    = obj.TelefonoCasa;
                    entity.TelefonoOficina = obj.TelefonoOficina;
                    entity.JornadaEntrega  = obj.JornadaEntrega;
                    entity.Imagen          = obj.imagen;
                    entity.IsEmpresa       = obj.EsEmpresa;
                    entity.Activo          = true;
                    if (obj.ClienteId == 0)
                    {
                        nuevo = true;
                        entities.Add(entity);
                    }
                    entities.SaveChanges();
                    obj.ClienteId = entity.Id;
                    var idCliente = obj.ClienteId;
                    if (nuevo)
                    {
                        foreach (var item in obj.Direcciones)
                        {
                            entities.Add(new DireccionesCliente
                            {
                                Ubicacion    = item.Direccion,
                                CodigoPostal = item.CodigoPostal,
                                Ciudad_id    = item.Ciudad_id,
                                Cliente_id   = idCliente,
                                DateCreated  = obj.Auditoria.DateCreated,
                                IdCreatorby  = obj.Auditoria.IdCreatorby,
                                Latitud      = item.Latitud,
                                Longitud     = item.Longitud,
                                Activo       = true
                            });
                            entities.SaveChanges();
                        }
                    }
                    else
                    {
                        obj = null;
                    }
                }

                Empresario entityEmpresario = new Empresario();
                entityEmpresario.IdCreatorby                  = obj.Auditoria.IdCreatorby;
                entityEmpresario.DateCreated                  = obj.Auditoria.DateCreated;
                entityEmpresario.IdClientePersonaEmpresa      = obj.ClienteId;
                entityEmpresario.NumeroRegistroArtesEscenicas = obj.NumeroRegistroArtesEscenicas;
                entityEmpresario.Pulet = obj.EmpresarioPulet;
                entityEmpresario.TipoDocumentoRL_id     = obj.EmpresarioTipoDocumento_idRL;
                entityEmpresario.IdentificacionRL       = obj.EmpresarioIdentificacionRL;
                entityEmpresario.NombreRL               = obj.EmpresarioPrimerNombreRL;
                entityEmpresario.SegundoNombreRl        = obj.EmpresarioSegundoNombreRL;
                entityEmpresario.ApellidosRL            = obj.EmpresarioPrimerApellidosRL;
                entityEmpresario.SegindoApellidoRL      = obj.EmpresarioSegundoApellidosRL;
                entityEmpresario.Sexo_idRL              = obj.EmpresarioGenero_idRL;
                entityEmpresario.FechaNacimientoRL      = obj.EmpresarioFechaNacimientoRL;
                entityEmpresario.EmailRL                = obj.EmpresarioEmailRL;
                entityEmpresario.CelularRL              = obj.EmpresarioCelularRL;
                entityEmpresario.EmailNotificacion      = obj.EmpresarioEmailNotificacion;
                entityEmpresario.NombreEstableciemiento = obj.NombreEstablecimeinto;
                entityEmpresario.Activo = true;
                entities.Add(entityEmpresario);
                entities.SaveChanges();
                obj.EmpresarioId = entityEmpresario.Id;
                UsuariosEmpresario entityUsuario = new UsuariosEmpresario();
                entityUsuario.IdClientePersonaEmpresa = obj.ClienteId;
                entityUsuario.Nombre      = obj.UserEmpresario;
                entityUsuario.Email       = obj.UserEmailEmpresario;
                entityUsuario.Contrasena  = Utilidades.Encrypt(obj.PasswordEmpresaio);
                entityUsuario.IdCreatorby = obj.Auditoria.IdCreatorby;
                entityUsuario.DateCreated = obj.Auditoria.DateCreated;
                entityUsuario.Activo      = true;
                entities.Add(entityUsuario);
                entities.SaveChanges();
                obj.UsuarioEmpresarioId = entityUsuario.Id;
                UsuarioEmpresasriosRol entityUsuarioEmpresarioRol = new UsuarioEmpresasriosRol();
                entityUsuarioEmpresarioRol.IdEmpresario         = obj.EmpresarioId;
                entityUsuarioEmpresarioRol.IdUsuarioEmpresarios = obj.UsuarioEmpresarioId;
                entityUsuarioEmpresarioRol.IdRol       = 2;
                entityUsuarioEmpresarioRol.IdCreatorby = obj.Auditoria.IdCreatorby;
                entityUsuarioEmpresarioRol.DateCreated = obj.Auditoria.DateCreated;
                entityUsuarioEmpresarioRol.Activo      = true;
                entities.Add(entityUsuarioEmpresarioRol);
                entities.SaveChanges();
                return(obj);
            }
            catch (Exception err)
            {
                var message = err.Message;
                return(null);
            }
        }