public JsonResult Nuevo(mUsuarios pobjModelo, int RegionId, int ZonaId, int idUsuario)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var jRegion = (from j in db.mCoordinacionRegionZonaUsuario
                                   where j.CoordinacionRegionId == RegionId
                                   select j).ToList();

                    var jZona = (from z in db.mCoordinacionZonaUsuario
                                 where z.CoordinacionZonaId == ZonaId &&
                                 z.JefeCoordinacionZona == true
                                 select z).ToList();

                    if (correoExistente(pobjModelo.EmailUsuario) == true)
                    {
                        return(Json(new { Success = false, Message = "El correo electrónico del usuario ya está en uso." }));
                    }
                    else if (loginExistente(pobjModelo.LoginUsuario))
                    {
                        return(Json(new { Success = false, Message = "El usuario inicio de sesión ya está en uso." }));
                    }
                    else if (RFCExistente(pobjModelo.RFCUsuario))
                    {
                        return(Json(new { Success = false, Message = "El RFC ya esta registrado con otro usuario." }));
                    }
                    else
                    {
                        string contrasenaRec;
                        contrasenaRec = EncriptarController.GetMD5(pobjModelo.PasswordUsuario);
                        var fig = (pobjModelo.RolId == 2 ? 1 : (pobjModelo.RolId == 4 ? 2 : (pobjModelo.RolId == 5 ? 3 : 0)));
                        pobjModelo.FechaCreacion   = DateTime.Now;
                        pobjModelo.ImagenUsuario   = pobjModelo.ImagenUsuario == null ? null : pobjModelo.ImagenUsuario;
                        pobjModelo.PasswordUsuario = contrasenaRec;
                        pobjModelo.NumeroEmpleado  = pobjModelo.NumeroEmpleado;
                        if (fig != 0)
                        {
                            pobjModelo.TipoFiguraId = fig;
                        }
                        db.mUsuarios.Add(pobjModelo);
                        db.SaveChanges();

                        if (jZona.Count() == 0 && pobjModelo.RolId == 3)
                        {
                            mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                            objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                            objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                            objCoordinacionZona.JefeCoordinacionZona = true;
                            objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                            objCoordinacionZona.FechaCreacion        = DateTime.Now;
                            db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                            db.SaveChanges();
                        }
                        else if (pobjModelo.RolId != 6)
                        {
                            if (pobjModelo.RolId == 2 || pobjModelo.RolId == 4 || pobjModelo.RolId == 5)
                            {
                                mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                objCoordinacionZona.JefeCoordinacionZona = false;
                                objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                db.SaveChanges();
                            }
                            else if (pobjModelo.RolId == 3)
                            {
                                var temp = jZona.First();
                                temp.UsuarioId = pobjModelo.UsuarioId;
                                db.SaveChanges();
                            }
                            else
                            {
                                if (ZonaId != 0)
                                {
                                    mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                    objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                    objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                    objCoordinacionZona.JefeCoordinacionZona = false;
                                    objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                    objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                    db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                    db.SaveChanges();
                                }
                            }
                        }

                        if (jRegion.Count() == 0 && pobjModelo.RolId == 6)
                        {
                            mCoordinacionRegionZonaUsuario objCoordinacionZonaRegion = new mCoordinacionRegionZonaUsuario();

                            objCoordinacionZonaRegion.UsuarioJefeRegionId = pobjModelo.UsuarioId;
                            //objCoordinacionZonaRegion.CoordinacionZonaId = ZonaId;
                            objCoordinacionZonaRegion.CoordinacionRegionId = RegionId;
                            db.mCoordinacionRegionZonaUsuario.Add(objCoordinacionZonaRegion);
                            db.SaveChanges();
                        }
                        else
                        {
                            if (pobjModelo.RolId == 6)
                            {
                                var dbjefe = jRegion.First();
                                dbjefe.UsuarioJefeRegionId = pobjModelo.UsuarioId;
                                db.SaveChanges();
                            }
                        }


                        return(Json(new { Success = true, id = pobjModelo.UsuarioId, Message = "Se guardó correctamente el usuario " }));
                    }
                }
#pragma warning disable CS0168 // La variable 'exp' se ha declarado pero nunca se usa
                catch (Exception exp)
#pragma warning restore CS0168 // La variable 'exp' se ha declarado pero nunca se usa
                {
                    return(Json(new { Success = false, Message = "No fue posible guardar la información" }));
                }
            }

            return(Json(new { Success = false, Message = "Información incompleta" }));
        }
        public JsonResult Actualiza(mUsuarios pobjModelo, int RegionId, int ZonaId, int idUsuario)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (pobjModelo.EstatusId == 6)
                    {
                        var result = from u in db.mUsuarios where (u.UsuarioId == pobjModelo.UsuarioId) select u;
                        var dbUsu  = result.First();
                        dbUsu.EstatusId = pobjModelo.EstatusId;
                        db.SaveChanges();

                        return(Json(new { Success = true, id = pobjModelo.UsuarioId, Message = "Se actualizó correctamente el usuario " }));
                    }
                    else
                    {
                        var jRegion = (from j in db.mCoordinacionRegionZonaUsuario
                                       where j.CoordinacionRegionId == RegionId
                                       select j).ToList();

                        var usarioexisteReg = (from j in db.mCoordinacionRegionZonaUsuario
                                               where j.UsuarioJefeRegionId == pobjModelo.UsuarioId
                                               select j).ToList();

                        var jZona = (from z in db.mCoordinacionZonaUsuario
                                     where z.CoordinacionZonaId == ZonaId &&
                                     z.JefeCoordinacionZona == true
                                     select z).ToList();

                        var jZonaActual = (from z in db.mCoordinacionZonaUsuario
                                           where z.UsuarioId == pobjModelo.UsuarioId &&
                                           z.JefeCoordinacionZona == true
                                           select z).ToList();

                        if (jZonaActual.Count() != 0)
                        {
                            var czona = jZonaActual.First();

                            var notificaciones = (from z in db.mNotificaciones
                                                  where z.CoordinacionZonaUsuarioId == czona.CordinacionZonaUsuarioId
                                                  select z).ToList();
                            db.mNotificaciones.RemoveRange(notificaciones);
                            db.SaveChanges();

                            db.mCoordinacionZonaUsuario.RemoveRange(jZonaActual);
                            db.SaveChanges();
                        }

                        var usarioexisteZona = (from j in db.mCoordinacionZonaUsuario
                                                where j.UsuarioId == pobjModelo.UsuarioId
                                                select j).ToList();

                        var    result = from u in db.mUsuarios where (u.UsuarioId == pobjModelo.UsuarioId) select u;
                        string contrasenaRec;
                        if (result.First().PasswordUsuario != pobjModelo.PasswordUsuario)
                        {
                            contrasenaRec = EncriptarController.GetMD5(pobjModelo.PasswordUsuario);
                        }
                        else
                        {
                            contrasenaRec = result.First().PasswordUsuario;
                        }

                        if (result.Count() != 0)
                        {
                            var dbUsu = result.First();
                            if (dbUsu.EmailUsuario != pobjModelo.EmailUsuario)
                            {
                                if (correoExistente(pobjModelo.EmailUsuario))
                                {
                                    return(Json(new { Success = false, Message = "El correo electrónico del usuario ya está en uso" }));
                                }
                            }

                            if (dbUsu.LoginUsuario != pobjModelo.LoginUsuario)
                            {
                                if (loginExistente(pobjModelo.LoginUsuario))
                                {
                                    return(Json(new { Success = false, Message = "El login del usuario ya está en uso." }));
                                }
                            }

                            if (dbUsu.RFCUsuario != pobjModelo.RFCUsuario)
                            {
                                if (RFCExistente(pobjModelo.RFCUsuario))
                                {
                                    return(Json(new { Success = false, Message = "El RFC ya esta registrado con otro usuario." }));
                                }
                            }


                            dbUsu.NombresUsuario   = pobjModelo.NombresUsuario;
                            dbUsu.ApellidosUsuario = pobjModelo.ApellidosUsuario;
                            dbUsu.LoginUsuario     = pobjModelo.LoginUsuario;
                            dbUsu.PasswordUsuario  = contrasenaRec;
                            dbUsu.EmailUsuario     = pobjModelo.EmailUsuario;
                            dbUsu.RFCUsuario       = pobjModelo.RFCUsuario;
                            dbUsu.RolId            = pobjModelo.RolId;
                            dbUsu.NumeroEmpleado   = pobjModelo.NumeroEmpleado;
                            var fig = (pobjModelo.RolId == 2 ? 1 : (pobjModelo.RolId == 4 ? 2 : (pobjModelo.RolId == 5 ? 3 : 0)));
                            if (fig != 0)
                            {
                                dbUsu.TipoFiguraId = fig;
                            }
                            if (pobjModelo.ImagenUsuario != null)
                            {
                                dbUsu.ImagenUsuario = pobjModelo.ImagenUsuario;
                            }

                            dbUsu.EstatusId = pobjModelo.EstatusId;


                            db.SaveChanges();

                            if (jZona.Count() == 0 && pobjModelo.RolId == 3)
                            {
                                if (jZona.Count == 0)
                                {
                                    mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                    objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                    objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                    objCoordinacionZona.JefeCoordinacionZona = true;
                                    objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                    objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                    db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                    db.SaveChanges();
                                }
                                else
                                {
                                    var col = db.mCoordinacionZonaUsuario.Where(t => t.UsuarioId == pobjModelo.UsuarioId);
                                    db.mCoordinacionZonaUsuario.RemoveRange(col);
                                    db.SaveChanges();

                                    mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                    objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                    objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                    objCoordinacionZona.JefeCoordinacionZona = true;
                                    objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                    objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                    db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                    db.SaveChanges();
                                }
                            }
                            else if (pobjModelo.RolId != 6)
                            {
                                if (pobjModelo.RolId == 2 || pobjModelo.RolId == 4 || pobjModelo.RolId == 5)
                                {
                                    var usuarioZona = (from j in db.mCoordinacionZonaUsuario
                                                       where j.UsuarioId == pobjModelo.UsuarioId
                                                       select j).ToList();
                                    if (usuarioZona.Count() == 0)
                                    {
                                        mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                        objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                        objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                        objCoordinacionZona.JefeCoordinacionZona = false;
                                        objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                        objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                        db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                        db.SaveChanges();
                                    }
                                    else
                                    {
                                        //var col = db.mCoordinacionZonaUsuario.Where(t => t.UsuarioId == pobjModelo.UsuarioId);
                                        //db.mCoordinacionZonaUsuario.RemoveRange(col);
                                        //db.SaveChanges();

                                        //mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                        //objCoordinacionZona.UsuarioId = pobjModelo.UsuarioId;
                                        //objCoordinacionZona.CoordinacionZonaId = ZonaId;
                                        //objCoordinacionZona.JefeCoordinacionZona = false;
                                        //objCoordinacionZona.UsuarioCreacionId = idUsuario;
                                        //objCoordinacionZona.FechaCreacion = DateTime.Now;
                                        //db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                        //db.SaveChanges();
                                        var dbTemp = usarioexisteZona.First();
                                        dbTemp.CoordinacionZonaId = ZonaId;
                                        db.SaveChanges();
                                    }
                                }
                                else if (pobjModelo.RolId == 3)
                                {
                                    var temp = jZona.First();
                                    temp.UsuarioId = pobjModelo.UsuarioId;
                                    db.SaveChanges();
                                }
                                else
                                {
                                    var usuarioZona = (from j in db.mCoordinacionZonaUsuario
                                                       where j.UsuarioId == pobjModelo.UsuarioId
                                                       select j).ToList();
                                    if (usuarioZona.Count() != 0)
                                    {
                                        var col = db.mCoordinacionZonaUsuario.Where(t => t.UsuarioId == pobjModelo.UsuarioId);
                                        db.mCoordinacionZonaUsuario.RemoveRange(col);
                                        db.SaveChanges();
                                    }

                                    if (ZonaId != 0)
                                    {
                                        mCoordinacionZonaUsuario objCoordinacionZona = new mCoordinacionZonaUsuario();

                                        objCoordinacionZona.UsuarioId            = pobjModelo.UsuarioId;
                                        objCoordinacionZona.CoordinacionZonaId   = ZonaId;
                                        objCoordinacionZona.JefeCoordinacionZona = false;
                                        objCoordinacionZona.UsuarioCreacionId    = idUsuario;
                                        objCoordinacionZona.FechaCreacion        = DateTime.Now;
                                        db.mCoordinacionZonaUsuario.Add(objCoordinacionZona);
                                        db.SaveChanges();
                                    }
                                }
                            }

                            if (jRegion.Count() == 0 && pobjModelo.RolId == 6)
                            {
                                if (usarioexisteReg.Count() == 0)
                                {
                                    mCoordinacionRegionZonaUsuario objCoordinacionZonaRegion = new mCoordinacionRegionZonaUsuario();

                                    objCoordinacionZonaRegion.UsuarioJefeRegionId = pobjModelo.UsuarioId;
                                    //objCoordinacionZonaRegion.CoordinacionZonaId = ZonaId;
                                    objCoordinacionZonaRegion.CoordinacionRegionId = RegionId;
                                    db.mCoordinacionRegionZonaUsuario.Add(objCoordinacionZonaRegion);
                                    db.SaveChanges();
                                }
                                else
                                {
                                    var col = db.mCoordinacionRegionZonaUsuario.Where(t => t.UsuarioJefeRegionId == pobjModelo.UsuarioId);
                                    db.mCoordinacionRegionZonaUsuario.RemoveRange(col);
                                    db.SaveChanges();

                                    mCoordinacionRegionZonaUsuario objCoordinacionZonaRegion = new mCoordinacionRegionZonaUsuario();

                                    objCoordinacionZonaRegion.UsuarioJefeRegionId = pobjModelo.UsuarioId;
                                    //objCoordinacionZonaRegion.CoordinacionZonaId = ZonaId;
                                    objCoordinacionZonaRegion.CoordinacionRegionId = RegionId;
                                    db.mCoordinacionRegionZonaUsuario.Add(objCoordinacionZonaRegion);
                                    db.SaveChanges();
                                }
                            }
                            else
                            {
                                if (pobjModelo.RolId == 6)
                                {
                                    var dbjefe = jRegion.First();
                                    dbjefe.UsuarioJefeRegionId = pobjModelo.UsuarioId;
                                    db.SaveChanges();
                                }
                            }
                        }
                        return(Json(new { Success = true, id = pobjModelo.UsuarioId, Message = "Se actualizó correctamente el usuario " }));
                    }
                }
#pragma warning disable CS0168 // La variable 'exp' se ha declarado pero nunca se usa
                catch (Exception exp)
#pragma warning restore CS0168 // La variable 'exp' se ha declarado pero nunca se usa
                {
                    return(Json(new { Success = false, Message = "No fue posible guardar la información." }));
                }
            }

            return(Json(new { Success = false, Message = "Información del usuario esta incompleta" }));
        }