Example #1
0
        public ActionResult Edit(string id)
        {
            ViewBag.Current = "Users";

            if (string.IsNullOrEmpty(id))
            {
                return(RedirectToAction("BadRequestError", "ErrorController"));
            }
            ApplicationUser user = UserManager.FindById(id);

            if (user == null)
            {
                return(RedirectToAction("HttpNotFoundError", "ErrorController"));
            }


            if (CheckDelete.CheckUserEdit(id) == false)
            {
                return(RedirectToAction("Index", new { Id = "OperationError" }));
            }
            EditProfileViewModel EProfile = new EditProfileViewModel()
            {
                Email        = user.Email,
                FullName     = user.FullName,
                Role         = user.RoleName,
                Id           = user.Id,
                UserName     = user.UserName,
                Gender       = user.Gender,
                JobTitleId   = user.JobTitleId == null ? 0 : user.JobTitleId.Value,
                DepartmentID = user.DepartmentId == null ? 0 : user.DepartmentId.Value
            };

            ViewBag.Role = new SelectList(db.Roles.ToList(), "Name", "Name", EProfile.Role);

            List <int> SelectedGroups = new List <int>();

            SelectedGroups = db.UsersGroups.Where(a => a.UserId.Equals(id)).Select(a => a.GroupId).ToList();

            List <SelectListItem> ListSl = new List <SelectListItem>();

            foreach (var G in db.Groups.ToList())
            {
                var sl = new SelectListItem()
                {
                    Text     = G.Name,
                    Value    = G.Id.ToString(),
                    Selected = SelectedGroups.DefaultIfEmpty().Contains(G.Id) ? true : false
                };

                ListSl.Add(sl);
            }
            ViewBag.Groups = ListSl;


            ViewBag.DepartmentID = new SelectList(DepartmentListDisplay.CreateDepartmentListDisplay(), "Id", "Name", EProfile.DepartmentID);
            ViewBag.JobTitleId   = new SelectList(db.JobTitles.ToList(), "Id", "Name", EProfile.JobTitleId);


            return(View(EProfile));
        }
        public ActionResult Confirm(int?id)
        {
            ViewBag.Current = "Department";

            Department department = db.Departments.Find(id);

            string DepartmentName = DepartmentListDisplay.CreateDepartmentDisplay(department.Id);

            db.Departments.Remove(department);
            db.SaveChanges();
            string NotificationTime = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");


            string                 UserId       = User.Identity.GetUserId();
            Notification           notification = null;
            List <ApplicationUser> Users        = db.Users.Where(a => !a.Id.Equals(UserId)).ToList();

            foreach (ApplicationUser user in Users)
            {
                notification = new Notification()
                {
                    CreatedAt           = NotificationTime,
                    Active              = false,
                    UserId              = user.Id,
                    Message             = "تم حذف القسم : " + DepartmentName,
                    NotificationOwnerId = UserId
                };
                db.Notifications.Add(notification);
            }
            db.SaveChanges();
            return(RedirectToAction("Index", new { Id = "DeleteSuccess" }));
        }
        public ActionResult Edit([Bind(Include = "Id,Name,CreatedAt,CreatedById,ParentId")] Department department)
        {
            ViewBag.Current = "Department";

            if (Convert.ToInt32(Session["Parent_Id"]) != 0)
            {
                int Pid = Convert.ToInt32(Session["Parent_Id"]);
                ////Get Childerns:
                Department Childs = db.Departments.Include(a => a.ChildDepartment).SingleOrDefault(a => a.Id == Pid);
                if (Childs.ChildDepartment.Where(a => a.Id != department.Id).Any(a => a.Name.Equals(department.Name, StringComparison.OrdinalIgnoreCase)) == true)
                {
                    return(RedirectToAction("Index", new { Id = "EditError" }));
                }
            }

            else

            {
                if (db.Departments.Where(a => a.Id != department.Id).Any(a => a.Name.Equals(department.Name, StringComparison.OrdinalIgnoreCase)) == true)
                {
                    return(RedirectToAction("Index", new { Id = "EditError" }));
                }
            }
            if (ModelState.IsValid)
            {
                string OldName = DepartmentListDisplay.CreateDepartmentDisplay(department.Id);
                department.UpdatedAt       = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");
                department.UpdatedById     = User.Identity.GetUserId();
                db.Entry(department).State = EntityState.Modified;

                db.SaveChanges();
                string Newname          = DepartmentListDisplay.CreateDepartmentDisplay(department.Id);
                string NotificationTime = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");


                string                 UserId       = User.Identity.GetUserId();
                Notification           notification = null;
                List <ApplicationUser> Users        = db.Users.Where(a => !a.Id.Equals(UserId)).ToList();
                foreach (ApplicationUser user in Users)
                {
                    notification = new Notification()
                    {
                        CreatedAt           = NotificationTime,
                        Active              = false,
                        UserId              = user.Id,
                        Message             = "تم تعديل اسم القسم من: " + OldName + " إلى:" + Newname,
                        NotificationOwnerId = UserId
                    };
                    db.Notifications.Add(notification);
                }
                db.SaveChanges();
                return(RedirectToAction("Index", new { Id = "EditSuccess" }));
            }

            return(RedirectToAction("Index"));
        }
Example #4
0
        public ActionResult Register()
        {
            //Role
            ViewBag.Current = "Users";
            ViewBag.Groups  = new SelectList(db.Groups.ToList(), "Id", "Name");

            ViewBag.Role = new SelectList(db.Roles.Where(a => !a.Name.Equals("Master")).ToList(), "Name", "Name");


            ViewBag.DepartmentID = new SelectList(DepartmentListDisplay.CreateDepartmentListDisplay(), "Id", "Name");
            ViewBag.JobTitleId   = new SelectList(db.JobTitles.ToList(), "Id", "Name");



            return(View());
        }
Example #5
0
        public ActionResult Create(int?Id)
        {
            ViewBag.Current = "Document";


            if (Id == null)
            {
                return(RedirectToAction("BadRequestError", "ErrorController"));
            }

            Document document = db.Documents.Find(Id);

            if (document == null)
            {
                return(RedirectToAction("HttpNotFoundError", "ErrorController"));
            }


            Session["Document_Id"] = Id;



            List <int> Departments_Document = db.DocumentDepartments.Where(a => a.DocumentId == Id.Value).Select(a => a.DepartmentId).Distinct().ToList();

            //All Departments Expect current :
            List <int> DepartmentsId = db.Departments.Select(a => a.Id).Except(Departments_Document).ToList();

            ViewBag.DocumentIdValue = Id.Value;


            IEnumerable <DepartmentListDisplay> Departments = DepartmentListDisplay.CreateDepartmentListDisplay().Where(a => DepartmentsId.Contains(a.Id)).ToList();



            return(View(Departments));
        }
        public ActionResult Create(int?Id)
        {
            ViewBag.Current = "Forms";

            if (Id == null)
            {
                return(RedirectToAction("BadRequestError", "ErrorController"));
            }

            Form form = db.Forms.Find(Id);

            if (form == null)
            {
                return(RedirectToAction("HttpNotFoundError", "ErrorController"));
            }


            Session["Form_Id"] = Id;


            int Form_Id = Convert.ToInt32(Session["Form_Id"]);

            List <int> Departments_Form = db.FormDepartments.Where(a => a.FormId == Form_Id).Select(a => a.DepartmentId).Distinct().ToList();

            //All Departments Expect current :
            List <int> DepartmentsId = db.Departments.Select(a => a.Id).Except(Departments_Form).ToList();

            ViewBag.FormIdValue = Form_Id;


            IEnumerable <DepartmentListDisplay> Departments = DepartmentListDisplay.CreateDepartmentListDisplay().Where(a => DepartmentsId.Contains(a.Id)).ToList();



            return(View(Departments));
        }
Example #7
0
        public async Task <ActionResult> Register(RegisterViewModel model, IEnumerable <string> Groups)

        {
            bool x = true;

            ViewBag.Current = "Users";

            ViewBag.DepartmentID = new SelectList(DepartmentListDisplay.CreateDepartmentListDisplay(), "Id", "Name");
            ViewBag.JobTitleId   = new SelectList(db.JobTitles.ToList(), "Id", "Name");

            ViewBag.Role = new SelectList(db.Roles.Where(a => !a.Name.Equals("Master")).ToList(), "Name", "Name", model.Role);

            ViewBag.Groups = new SelectList(db.Groups.ToList(), "Id", "Name");


            if (ModelState.IsValid)
            {
                if (db.Users.Any(a => a.UserName.Equals(model.UserName, StringComparison.OrdinalIgnoreCase)))
                {
                    ModelState.AddModelError("UserName", "اسم المستخدم موجود مسبقاً يرجى اعادة الإدخال");
                    x = false;
                }

                if (CheckJobTitleDepartment.CheckJobTitleDepartmentCreateUser(model.DepartmentID, model.JobTitleId) == false)
                {
                    ModelState.AddModelError("JobTitleId", "عددالأعضاء للقسم بالنسبة للمسمى الوظيفي وصل للحد الأعظمي");
                    x = false;
                }

                if (!string.IsNullOrEmpty(model.Email))
                {
                    if (db.Users.Any(a => a.Email.Equals(model.Email, StringComparison.OrdinalIgnoreCase)))
                    {
                        ModelState.AddModelError("Email", "لا يمكن أن يكون البريد الإلكتروني مكرر، يرجى إعادةالإدخال");

                        x = false;
                    }
                }


                if (x == false)
                {
                    return(View(model));
                }
                var user = new ApplicationUser
                {
                    UserName     = model.UserName,
                    Email        = model.Email,
                    FullName     = model.FullName,
                    Gender       = model.Gender,
                    DepartmentId = model.DepartmentID,
                    JobTitleId   = model.JobTitleId,
                    CreatedAt    = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss"),
                    CreatedById  = this.User.Identity.GetUserId(),
                    RoleName     = model.Role
                };

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await UserManager.AddToRoleAsync(user.Id, model.Role);


                    //Add User To Groups
                    if (Groups != null)
                    {
                        string       UserId           = User.Identity.GetUserId();
                        Notification notification     = null;
                        string       NotificationTime = string.Empty;
                        string       GroupName        = string.Empty;
                        foreach (string User_Group_Id in Groups)
                        {
                            var UserGroup = new UserGroup()
                            {
                                UserId      = user.Id,
                                GroupId     = Convert.ToInt32(User_Group_Id),
                                CreatedAt   = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss"),
                                CreatedById = this.User.Identity.GetUserId()
                            };

                            NotificationTime = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");
                            db.UsersGroups.Add(UserGroup);
                            GroupName    = db.Groups.Find(UserGroup.GroupId).Name;
                            notification = new Notification()
                            {
                                CreatedAt = NotificationTime,
                                Active    = false,
                                UserId    = user.Id,
                                Message   = "تم إضافتك   إلى المجموعة  :" + GroupName
                                ,
                                NotificationOwnerId = UserId
                            };
                            db.Notifications.Add(notification);
                        }
                    }


                    db.SaveChanges();
                    return(RedirectToAction("Index", new { @Id = "CreateSuccess" }));
                }
                // AddErrors(result);
            }



            return(View(model));
        }
Example #8
0
        public ActionResult Edit(EditProfileViewModel EProfile, IEnumerable <string> Groups)

        {
            ViewBag.Current = "Users";
            string OldUserRole = db.Users.Find(EProfile.Id).RoleName;

            ViewBag.Role = new SelectList(db.Roles.ToList(), "Id", "Name", EProfile.Role);

            ViewBag.DepartmentID = new SelectList(DepartmentListDisplay.CreateDepartmentListDisplay(), "Id", "Name", EProfile.DepartmentID);
            ViewBag.JobTitleId   = new SelectList(db.JobTitles.ToList(), "Id", "Name", EProfile.JobTitleId);

            List <int> SelectedGroups = new List <int>();

            SelectedGroups = db.UsersGroups.Where(a => a.UserId.Equals(EProfile.Id)).Select(a => a.GroupId).ToList();
            SelectListItem        sl;
            List <SelectListItem> ListSl = new List <SelectListItem>();

            foreach (var G in db.Groups.ToList())
            {
                sl = new SelectListItem()
                {
                    Text     = G.Name,
                    Value    = G.Id.ToString(),
                    Selected = SelectedGroups.DefaultIfEmpty().Contains(G.Id) ? true : false
                };

                ListSl.Add(sl);
            }
            ViewBag.Groups = ListSl;
            bool            x    = true;
            ApplicationUser user = null;

            if (ModelState.IsValid)
            {
                user = UserManager.FindById(EProfile.Id);
                if (user == null)
                {
                    return(RedirectToAction("HttpNotFoundError", "ErrorController"));
                }

                //Delete All Users Permissions:
                if (!user.RoleName.Equals(EProfile.Role))
                {
                    List <PermissionsUser> User_Permissions = db.PermissionUsers.Where(a => a.UserId.Equals(user.Id)).ToList();
                    foreach (PermissionsUser UP in User_Permissions)
                    {
                        db.PermissionUsers.Remove(UP);
                    }
                    db.SaveChanges();
                }



                if (!EProfile.Role.Equals("Master"))
                {
                    if (CheckJobTitleDepartment.CheckJobTitleDepartmentCreateUser(EProfile.DepartmentID, EProfile.JobTitleId, EProfile.Id) == false)
                    {
                        ModelState.AddModelError("JobTitleId", "عددالأعضاء للقسم بالنسبة للمسمى الوظيفي وصل للحد الأعظمي");
                        x = false;
                    }
                }



                if (db.Users.Where(a => !a.Id.Equals(EProfile.Id)).Any(a => a.UserName.Equals(EProfile.UserName, StringComparison.OrdinalIgnoreCase)))
                {
                    ModelState.AddModelError("UserName", "لا يمكن أن يكون اسم امستخدم  مكرر، يرجى إعادةالإدخال");

                    x = false;
                }

                if (!string.IsNullOrEmpty(EProfile.Email))
                {
                    if (db.Users.Where(a => !a.Id.Equals(EProfile.Id)).Any(a => a.Email.Equals(EProfile.Email, StringComparison.OrdinalIgnoreCase)))
                    {
                        ModelState.AddModelError("Email", "لا يمكن أن يكون البريد الإلكتروني مكرر، يرجى إعادةالإدخال");

                        x = false;
                    }
                }

                if (x == false)
                {
                    return(View(EProfile));
                }
                user.FullName = EProfile.FullName;
                user.Email    = EProfile.Email;
                user.Gender   = EProfile.Gender;
                user.RoleName = EProfile.Role;
                user.UserName = EProfile.UserName;
                var HashPassword = UserManager.PasswordHasher.HashPassword(EProfile.Password);
                user.PasswordHash = HashPassword;

                user.UpdatedAt   = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");
                user.UpdatedByID = this.User.Identity.GetUserId();

                db.Entry(user).State = System.Data.Entity.EntityState.Modified;
                //Add User To Groups

                //

                string       UserId           = User.Identity.GetUserId();
                Notification notification     = null;
                string       NotificationTime = string.Empty;
                string       GroupName        = string.Empty;
                NotificationTime = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");

                notification = new Notification()
                {
                    CreatedAt           = NotificationTime,
                    Active              = false,
                    UserId              = user.Id,
                    Message             = "تم تحديث معلوماتك الشخصية",
                    NotificationOwnerId = UserId
                };
                db.Notifications.Add(notification);



                List <string> SelectedUserGroups = new List <string>();
                SelectedUserGroups = db.UsersGroups.Where(a => a.UserId.Equals(EProfile.Id)).Select(a => a.GroupId.ToString()).ToList();
                if (Groups != null)
                {
                    UserGroup     UserGroup    = null;
                    List <string> ExpectGroups = new List <string>();
                    ExpectGroups = SelectedUserGroups.Except(Groups).ToList();
                    foreach (string User_Group_Id in Groups)
                    {
                        NotificationTime = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss");

                        if (SelectedUserGroups.Contains(User_Group_Id))
                        {
                            continue;
                        }
                        UserGroup = new UserGroup()
                        {
                            UserId      = user.Id,
                            GroupId     = Convert.ToInt32(User_Group_Id),
                            CreatedAt   = DateTime.Now.ToString("dd/MM/yyyy-HH:mm:ss"),
                            CreatedById = this.User.Identity.GetUserId()
                        };

                        db.UsersGroups.Add(UserGroup);
                        GroupName    = db.Groups.Find(UserGroup.GroupId).Name;
                        notification = new Notification()
                        {
                            CreatedAt = NotificationTime,
                            Active    = false,
                            UserId    = user.Id,
                            Message   = "تم إضافتك   إلى المجموعة  :" + GroupName
                            ,
                            NotificationOwnerId = UserId
                        };
                        db.Notifications.Add(notification);
                    }


                    UserGroup deleteUserGroup;
                    foreach (string s in ExpectGroups)
                    {
                        deleteUserGroup = db.UsersGroups.Where(a => a.UserId.Equals(EProfile.Id) && a.GroupId.ToString().Equals(s)).SingleOrDefault();

                        db.UsersGroups.Remove(deleteUserGroup);
                        GroupName    = db.Groups.Find(deleteUserGroup.GroupId).Name;
                        notification = new Notification()
                        {
                            CreatedAt = NotificationTime,
                            Active    = false,
                            UserId    = user.Id,
                            Message   = "تم إزالتك   من المجموعة  :" + GroupName
                            ,
                            NotificationOwnerId = UserId
                        };
                        db.Notifications.Add(notification);
                    }
                    db.SaveChanges();
                }

                else
                {
                    foreach (UserGroup ug in db.UsersGroups.Where(a => a.UserId.Equals(EProfile.Id)))
                    {
                        db.UsersGroups.Remove(ug);
                        GroupName    = db.Groups.Find(ug.GroupId).Name;
                        notification = new Notification()
                        {
                            CreatedAt = NotificationTime,
                            Active    = false,
                            UserId    = user.Id,
                            Message   = "تم إزالتك   من المجموعة  :" + GroupName
                            ,
                            NotificationOwnerId = UserId
                        };
                        db.Notifications.Add(notification);
                    }

                    db.SaveChanges();
                }

                db.SaveChanges();



                return(RedirectToAction("Index", new { @Id = "EditSuccess" }));
            }



            return(View(EProfile));
        }
        public ActionResult Index()
        {
            Informations info = new Informations();


            string CurrentUserId = this.User.Identity.GetUserId();

            //Information For master:
            if (db.Users.Find(CurrentUserId).RoleName.Equals("Master"))
            {
                info.IsMasterRole = true;


                //Departments:
                info.MainDepartmentCount      = db.Departments.Where(a => a.ParentId == null).Count();
                info.AllDepartmentsCount      = db.Departments.Count();
                info.LastDateDepartmentCreate = db.Departments.Count() != 0 ? db.Departments.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";

                info.LastDateDepartmentUpdate = db.Departments.Count(a => a.UpdatedAt != null) != 0 ? db.Departments.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";


                //Groups:

                info.AllGroupsCount   = db.Groups.Count();
                info.LastGroupCreate  = db.Groups.Count() != 0 ? db.Groups.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";
                info.TotalUserInGroup = db.UsersGroups.Select(a => a.UserId).Distinct().Count();
                info.LastGroupUpdate  = db.Groups.Count(a => a.UpdatedAt != null) != 0 ? db.Departments.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";



                int HightGroupUsersC = db.UsersGroups.Count() == 0 ? 0 :


                                       db.UsersGroups.Include(a => a.Group).GroupBy(a => a.Group.Name).Select(a => new
                {
                    Key   = a.Key,
                    count = a.Count()
                }).OrderByDescending(a => a.count).FirstOrDefault().count;

                ;

                if (HightGroupUsersC != 0)
                {
                    List <string> GName = new List <string>();
                    GName = db.UsersGroups.Include(a => a.Group).GroupBy(a => a.Group.Name).Select(a => new
                    {
                        Key   = a.Key,
                        count = a.Count()
                    }).Where(a => a.count == HightGroupUsersC).Select(a => a.Key).ToList();


                    info.HightGroupUsers = GName.Aggregate((a, b) => a + "," + b);
                }
                else
                {
                    info.HightGroupUsers = "";
                }



                //Forms:
                info.TotalFormsCount = db.Forms.Count();
                info.LastFormCreate  = db.Forms.Count() != 0 ? db.Forms.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";
                info.LastFormUpdate  = db.Forms.Count(a => a.UpdatedAt != null) != 0 ? db.Departments.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";
                info.HightFormUsing  = "";

                int HightFormUsingC = db.Documents.Count() == 0 ? 0 :

                                      db.Documents.Include(a => a.Form).GroupBy(a => a.Form.Name)
                                      .Select(a => new
                {
                    key   = a.Key,
                    count = a.Count()
                }).OrderByDescending(a => a.count).FirstOrDefault().count;


                if (HightFormUsingC != 0)
                {
                    List <string> FName = new List <string>();
                    FName = db.Documents.Include(a => a.Form).GroupBy(a => a.Form.Name)
                            .Select(a => new
                    {
                        key   = a.Key,
                        count = a.Count()
                    }).Where(a => a.count == HightFormUsingC).Select(a => a.key).ToList();

                    info.HightFormUsing = FName.Aggregate((a, b) => a + "," + b);
                }
                else
                {
                    info.HightFormUsing = "";
                }


                //Users:
                info.TotalUserCount = db.Users.Count();
                info.LastUserCreate = db.Users.Count() != 0 ? db.Users.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";
                info.LastUserUpdate = db.Users.Count(a => a.UpdatedAt != null) != 0 ? db.Users.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";



                //Document

                info.TotalDocumentCount = db.Documents.Count();
                info.LastDocumentCreate = db.Documents.Count() != 0 ? db.Documents.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";



                //Mails:
                info.TotalMailsCount = db.TypeMails.Count();
                info.LastMailsCreate = db.TypeMails.Count() != 0 ? db.TypeMails.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";
                info.LastMailsUpdate = db.TypeMails.Count(a => a.UpdatedAt != null) != 0 ? db.TypeMails.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";


                int HightMailUsingC = db.Documents.Count() == 0 ? 0 :

                                      db.Documents.Include(a => a.TypeMail).GroupBy(a => a.TypeMail.Name)
                                      .Select(a => new
                {
                    key   = a.Key,
                    count = a.Count()
                }).OrderByDescending(a => a.count).FirstOrDefault().count;


                if (HightMailUsingC != 0)
                {
                    List <string> MName = new List <string>();
                    MName = db.Documents.Include(a => a.TypeMail).GroupBy(a => a.TypeMail.Name)
                            .Select(a => new
                    {
                        key   = a.Key,
                        count = a.Count()
                    }).Where(a => a.count == HightMailUsingC).Select(a => a.key).ToList();

                    info.HightMailUsing = MName.Aggregate((a, b) => a + "," + b);
                }
                else
                {
                    info.HightMailUsing = "";
                }



                //Document Kind:
                info.TotalDocumentKindCount = db.Kinds.Count();
                info.LastDocumentKindCreate = db.Kinds.Count() != 0 ? db.Kinds.OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt : "";
                info.LastDocumentKindUpdate = db.Kinds.Count(a => a.UpdatedAt != null) != 0 ? db.Kinds.OrderByDescending(a => a.UpdatedAt).FirstOrDefault().UpdatedAt : "";

                int HightDocumentKindUsingC = db.Documents.Include(a => a.Kind).Count(a => a.Kind != null) == 0 ? 0 :

                                              db.Documents.Include(a => a.Kind).GroupBy(a => a.Kind.Name)
                                              .Select(a => new
                {
                    key   = a.Key,
                    count = a.Count()
                }).OrderByDescending(a => a.count).FirstOrDefault().count;


                if (HightDocumentKindUsingC != 0)
                {
                    List <string> MName = new List <string>();
                    MName = db.Documents.Include(a => a.Kind).GroupBy(a => a.Kind.Name)
                            .Select(a => new
                    {
                        key   = a.Key,
                        count = a.Count()
                    }).Where(a => a.count == HightDocumentKindUsingC).Select(a => a.key).ToList();

                    info.HightDocumentKindUsing = MName.Aggregate((a, b) => a + "," + b);
                }
                else
                {
                    info.HightDocumentKindUsing = "";
                }
            }

            else
            {
                info.IsMasterRole = false;
            }
            //CurrentUser Informations:

            info.FullName = db.Users.Find(CurrentUserId).FullName;
            info.UserName = db.Users.Find(CurrentUserId).UserName;
            info.Email    = db.Users.Find(CurrentUserId).Email == null ? "" : db.Users.Find(CurrentUserId).Email;
            info.Gender   = db.Users.Find(CurrentUserId).Gender;


            int DepId = db.Users.Include(a => a.Department).SingleOrDefault(a => a.Id.Equals(CurrentUserId)).DepartmentId == null ?
                        0 :  db.Users.Include(a => a.Department).SingleOrDefault(a => a.Id.Equals(CurrentUserId)).Department.Id;


            info.DepartmentName = DepId == 0 ? "" : DepartmentListDisplay.CreateDepartmentDisplay(DepId);
            info.JobTitle       = db.Users.Include(a => a.jobTitle).SingleOrDefault(a => a.Id.Equals(CurrentUserId)).JobTitleId == null ?
                                  "" : db.Users.Include(a => a.jobTitle).SingleOrDefault(a => a.Id.Equals(CurrentUserId)).jobTitle.Name;


            info.UserCreateAt = db.Users.Find(CurrentUserId).CreatedAt;
            info.UserUpdate   = db.Users.Find(CurrentUserId).UpdatedAt == null ? "" : db.Users.Find(CurrentUserId).UpdatedAt;
            info.RoleName     = db.Users.Find(CurrentUserId).RoleName;



            //User Groups
            if (!db.Users.Find(CurrentUserId).RoleName.Equals("Master"))
            {
                info.IsMasterRole = false;

                GroupsUserInformation groupsUserInformation = null;
                info.UserGroups = new List <GroupsUserInformation>();
                List <UserGroup> UserG = db.UsersGroups.Include(a => a.Group).Where(a => a.UserId.Equals(CurrentUserId)).ToList();
                foreach (UserGroup u in UserG)
                {
                    groupsUserInformation = new GroupsUserInformation();

                    groupsUserInformation.Name       = u.Group.Name;
                    groupsUserInformation.UsersCount = db.UsersGroups.Where(a => a.GroupId == u.GroupId).Count();
                    info.UserGroups.Add(groupsUserInformation);
                }
            }
            else
            {
                info.IsMasterRole = true;
            }



            //User Favorite Form:

            if (!db.Users.Find(CurrentUserId).RoleName.Equals("Master"))
            {
                info.IsMasterRole = false;



                List <int> FavoriteFormId = db.FavouriteForms.Where(a => a.UserId.Equals(CurrentUserId)).Select(a => a.FormId).ToList();;


                info.FavoriteForm = new List <Form>();
                info.FavoriteForm = db.Forms.Where(a => FavoriteFormId.Contains(a.Id)).ToList();
            }
            else
            {
                info.IsMasterRole = true;
            }


            //User Basic Information:
            info.MyTotalDocument = db.Documents.Where(a => a.CreatedById.Equals(CurrentUserId)).Count();
            if (!db.Users.Find(CurrentUserId).RoleName.Equals("Master"))
            {
                info.MyGroupsCount        = db.UsersGroups.Where(a => a.UserId.Equals(CurrentUserId)).Count();
                info.LastMyDocumentCreate = db.Documents.Where(a => a.CreatedById.Equals(CurrentUserId)).Count() != 0 ?
                                            (ManagedAes.CipherData? ManagedAes.DecryptText(db.Documents
                                                                                           .Where(a => a.CreatedById.Equals(CurrentUserId))
                                                                                           .OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt) :
                                             db.Documents.Where(a => a.CreatedById.Equals(CurrentUserId))
                                             .OrderByDescending(a => a.CreatedAt).FirstOrDefault().CreatedAt)

                    : "0/0/0";

                info.DepartmentsCount = db.Departments.Count();
            }
            info.Company = db.Company.Find(1);

            return(View(info));
        }