예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Int32 LoginUserId = 0;

            if (HttpContext.Current.Session["UserId"] != null)
            {
                LoginUserId = Convert.ToInt32(HttpContext.Current.Session["UserId"].ToString());
            }
            User     user     = IUserService.GetSingle(LoginUserId);
            UserRole userRole = IUserRoleService.GetSingle(user.UserRoleId);

            if (Request.QueryString["hdnNumberPerPage"] != "" && Request.QueryString["hdnNumberPerPage"] != null)
            {
                hdnNumberPerPage.Value = Request.QueryString["hdnNumberPerPage"].ToString();
            }
            if (Request.QueryString["hdnCurrentPageNo"] != "" && Request.QueryString["hdnCurrentPageNo"] != null)
            {
                hdnCurrentPageNo.Value = Request.QueryString["hdnCurrentPageNo"].ToString();
            }
            if (Request.QueryString["hdnTotalRecordsCount"] != "" && Request.QueryString["hdnTotalRecordsCount"] != null)
            {
                hdnTotalRecordsCount.Value = Request.QueryString["hdnTotalRecordsCount"].ToString();
            }

            StringBuilder filter = new StringBuilder();

            filter.Append(" 1=1 ");

            if (Request.QueryString["IsNewSearch"] != "" && Request.QueryString["IsNewSearch"] != null)
            {
                IsNewSearch.Value = Request.QueryString["IsNewSearch"].ToString();
            }
            if (IsNewSearch.Value == "1")
            {
                hdnCurrentPageNo.Value = "";
            }
            if (Request.QueryString["Search"] != "" && Request.QueryString["Search"] != null)
            {
                Search.Value = Request.QueryString["Search"].ToString();
                string columnNameUsername = Converter.GetColumnNameByPropertyName <User>(nameof(Silverlake.Utility.User.Username));
                filter.Append(" and " + columnNameUsername + " like '%" + Search.Value + "%'");
                string columnNameEmail = Converter.GetColumnNameByPropertyName <User>(nameof(Silverlake.Utility.User.EmailId));
                filter.Append(" or " + columnNameEmail + " like '%" + Search.Value + "%'");
                string columnNameMobile = Converter.GetColumnNameByPropertyName <User>(nameof(Silverlake.Utility.User.MobileNumber));
                filter.Append(" or " + columnNameMobile + " like '%" + Search.Value + "%'");
            }

            string        userRoleId   = Converter.GetColumnNameByPropertyName <User>(nameof(Silverlake.Utility.User.UserRoleId));
            List <string> adminroleids = IUserRoleService.GetDataByPropertyName(nameof(UserRole.UserTypeId), "6", true, 0, 0, false).Select(x => x.Id.ToString()).ToList();

            filter.Append(" and " + userRoleId + " in (" + String.Join(",", adminroleids.ToArray()) + ")");

            if (userRole.Name == "HQ Admin")
            {
                filter.Append(" and " + userRoleId + " > " + userRole.Id + "");
            }
            else if (userRole.Name == "Regional Admin")
            {
                filter.Append(" and " + userRoleId + " > " + userRole.Id + "");
                List <Branch> Branches = new List <Branch>();
                if (user.IsAll == 0)
                {
                    List <BranchUser> userBranches = IBranchUserService.GetDataByFilter(" user_id = '" + user.Id + "' and status='1'", 0, 0, false);
                    Branches = IBranchService.GetDataByFilter(" ID not in (" + String.Join(",", userBranches.Select(x => x.BranchId).ToArray()) + ")", 0, 0, false);
                }
                else
                {
                    Branches = IBranchService.GetDataByFilter(" status='1'", 0, 0, false);
                }
                filter.Append(" and " + userRoleId + " > " + userRole.Id + " and branch_id in (" + String.Join(",", Branches.Select(x => x.Id).ToArray()) + ")");
            }
            else if (userRole.Name == "Branch Admin")
            {
                filter.Append(" and " + userRoleId + " > " + userRole.Id + "");
                filter.Append(" and " + userRoleId + " > " + userRole.Id + " and branch_id in (" + user.BranchId + ")");
            }
            int skip = 0, take = 10;

            if (hdnCurrentPageNo.Value == "")
            {
                skip = 0;
                take = 10;
                hdnNumberPerPage.Value     = "10";
                hdnCurrentPageNo.Value     = "1";
                hdnTotalRecordsCount.Value = IUserService.GetCountByFilter(filter.ToString()).ToString();
            }
            else
            {
                skip = (Convert.ToInt32(hdnCurrentPageNo.Value) - 1) * 10;
                take = 10;
            }

            List <User> users = IUserService.GetDataByFilter(filter.ToString(), skip, take, true);

            StringBuilder asb   = new StringBuilder();
            int           index = 1;

            List <Branch>     branches    = IBranchService.GetData(0, 0, false);
            List <Department> departments = IDepartmentService.GetData(0, 0, false);

            foreach (User u in users)
            {
                userRole = IUserRoleService.GetSingle(u.UserRoleId);
                Branch b = IBranchService.GetSingle(u.BranchId);

                StringBuilder departmentsHTML = new StringBuilder();
                if (userRole.Name == "Branch Admin")
                {
                    List <BranchDepartment> branchDepartments = IBranchDepartmentService.GetDataByFilter(" branch_id = '" + u.BranchId + "' and status='1'", 0, 0, false);
                    if (b.IsAll == 0)
                    {
                        departments = departments.Where(x => !(branchDepartments.Select(y => y.DepartmentId).ToList().Contains(x.Id))).ToList();
                    }
                    List <DepartmentUser> userDepartments = IDepartmentUserService.GetDataByPropertyName(nameof(DepartmentUser.UserId), u.Id.ToString(), true, 0, 0, false);
                    bool isSelectAllChecked = u.IsAll == 1 ? true : false;
                    departmentsHTML.Append(@"
                    <label class='icheck'>
                        <div class='flat-blue single-row'>
                            <div class='checkbox'>
                                <input type='checkbox' name='checkRow' class='checkRow selectAll' value='' " + (isSelectAllChecked ? "checked" : "") + @"/> <label>Select All</label><br/>
                            </div>
                        </div>
                    </label>
                ");
                    foreach (Department d in departments)
                    {
                        bool isChecked = false;
                        if (isSelectAllChecked)
                        {
                            isChecked = true;
                        }
                        else if (userDepartments.Count > 0)
                        {
                            DepartmentUser bd = userDepartments.Where(x => x.DepartmentId == d.Id && x.Status == 1).FirstOrDefault();
                            if (bd == null)
                            {
                                isChecked = true;
                            }
                        }
                        departmentsHTML.Append(@"
                        <label class='icheck'>
                            <div class='flat-green single-row'>
                                <div class='checkbox'>
                                    <input type='checkbox' name='checkRow' class='checkRow' value='" + d.Id + @"' " + (isChecked ? "checked" : "") + @"/> <label>" + d.Code + @"</label><br/>
                                </div>
                            </div>
                        </label>
                    ");
                    }
                }

                StringBuilder branchesHTML = new StringBuilder();
                if (userRole.Name == "Regional Admin")
                {
                    List <BranchUser> userBranches = IBranchUserService.GetDataByFilter(" user_id = '" + u.Id + "' and status='1'", 0, 0, false);
                    bool isSelectAllChecked        = u.IsAll == 1 ? true : false;
                    branchesHTML.Append(@"
                        <label class='icheck'>
                            <div class='flat-blue single-row'>
                                <div class='checkbox'>
                                    <input type='checkbox' name='checkRow' class='checkRow selectAll' value='' " + (isSelectAllChecked ? "checked" : "") + @"/> <label>Select All</label><br/>
                                </div>
                            </div>
                        </label>
                    ");
                    foreach (Branch br in branches)
                    {
                        bool isChecked = false;
                        if (isSelectAllChecked)
                        {
                            isChecked = true;
                        }
                        else if (userBranches.Count > 0)
                        {
                            BranchUser bd = userBranches.Where(x => x.BranchId == br.Id && x.Status == 1).FirstOrDefault();
                            if (bd == null)
                            {
                                isChecked = true;
                            }
                        }
                        branchesHTML.Append(@"
                        <label class='icheck'>
                            <div class='flat-green single-row'>
                                <div class='checkbox'>
                                    <input type='checkbox' name='checkRow' class='checkRow' value='" + br.Id + @"' " + (isChecked ? "checked" : "") + @"/> <label>" + br.Code + @"</label><br/>
                                </div>
                            </div>
                        </label>
                    ");
                    }
                }
                asb.Append(@"<tr>
                                <td class='icheck'>
                                    <div class='square single-row'>
                                        <div class='checkbox'>
                                            <input type='checkbox' name='checkRow' class='checkRow' value='" + u.Id + @"' /> <label>" + index + @"</label><br/>
                                        </div>
                                    </div>
                                    <span class='row-status'>" + (u.Status == 1 ? "<span class='label label-success'>Active</span>" : "<span class='label label-danger'>Inactive</span>") + @"</span>
                                </td>
                                <td>
                                    Username: <strong>" + u.Username + @"</strong><br />
                                    Email: <strong>" + u.EmailId + @"</strong><br />
                                    Mobile: <strong>" + u.MobileNumber + @"</strong><br />
                                    Role: <strong>" + userRole.Name + @"</strong><br />");

                if (userRole.Name == "Branch Admin")
                {
                    asb.Append(@"API Auth Token: <a href='javascript:;' class='btn btn-sm btn-primary view_batch_log'>View</a>
                                    <div class='div_batch_log hide draggableDiv'>
                                        <span class='log_close'>X</span>
                                        <table class='table mb-0'>
                                            <tr><td><strong>Api Auth Token</strong></td><td class='text-right'>User: <strong>" + u.Username + @"</strong></td></tr>
                                        </table>
                                        <div class='mini-stat clearfix text-left'>" + u.ApiAuthToken + @"</div>
                                    </div>");
                }
                asb.Append(@"</td>
                                <td style='width: 600px;'>
                                    " + (u.BranchId == 0 ? "<strong>Branches</strong><br />" + branchesHTML.ToString() : "<strong>Branch: " + b.Code + "</strong><br />") + @"
                                    " + (userRole.Name == "Branch Admin" ? "<strong>Departments</strong><br />" + departmentsHTML.ToString() : "") + @"
                                </td>
                            </tr>");
                index++;
            }
            adminsTbody.InnerHtml = asb.ToString();
        }
        // GET api/values
        public object Get(string apiAuthToken)
        {
            ConfigurationDTO configurationDTO = new ConfigurationDTO();
            List <User>      userMatches      = IUserService.GetDataByPropertyName(nameof(Utility.User.ApiAuthToken), apiAuthToken, true, 0, 0, false);
            User             user             = new Utility.User();

            if (userMatches.Count > 0)
            {
                user = userMatches.FirstOrDefault();
                if (user != null)
                {
                    if (user.Status == 0)
                    {
                        configurationDTO.isSuccess   = false;
                        configurationDTO.responseMsg = "User not active";
                        configurationDTO.user        = null;
                        configurationDTO.branch      = null;
                        return(configurationDTO);
                    }
                    else
                    {
                        UserRole userRole = IUserRoleService.GetSingle(user.UserRoleId);
                        if (user.BranchId == 0 && userRole.Name == "Super Admin")
                        {
                            configurationDTO.isSuccess   = true;
                            configurationDTO.responseMsg = "SA";
                            configurationDTO.user        = user;
                            configurationDTO.branch      = null;
                            return(configurationDTO);
                        }
                        else if (user.BranchId == 0 && userRole.Name == "HQ Admin")
                        {
                            configurationDTO.isSuccess   = true;
                            configurationDTO.responseMsg = "HQ Admin";
                            configurationDTO.user        = user;
                            configurationDTO.branch      = null;
                            return(configurationDTO);
                        }
                        else if (user.BranchId == 0 && userRole.Name == "Regional Admin")
                        {
                            configurationDTO.isSuccess   = true;
                            configurationDTO.responseMsg = "Regional Admin";
                            configurationDTO.user        = user;
                            configurationDTO.branch      = null;
                            return(configurationDTO);
                        }
                        else
                        {
                            Branch branch = IBranchService.GetSingle(user.BranchId);
                            if (branch.Status != 0)
                            {
                                List <Department> departments = new List <Department>();
                                if (branch.IsAll == 1)
                                {
                                    departments = IDepartmentService.GetData(0, 0, false);
                                }
                                else
                                {
                                    List <BranchDepartment> branchDepartments = IBranchDepartmentService.GetDataByFilter(" branch_id = '" + branch.Id + "' and status = '1'", 0, 0, false);
                                    departments = IDepartmentService.GetDataByFilter(" ID not in (" + String.Join(",", branchDepartments.Select(x => x.DepartmentId).ToArray()) + ") and status='1'", 0, 0, false);
                                    //departments.ForEach(x =>
                                    //{
                                    //    //x.Status = branchDepartments.Where(y => y.DepartmentId == x.Id).FirstOrDefault().Status;
                                    //    x.Status = 1;
                                    //});
                                }
                                List <DepartmentUser> userDepartments = IDepartmentUserService.GetDataByFilter(" user_id = '" + user.Id + "' and status='1'", 0, 0, false);
                                if (user.IsAll == 0)
                                {
                                    departments = departments.Where(x => !(userDepartments.Select(y => y.DepartmentId).ToList().Contains(x.Id))).ToList();
                                }
                                configurationDTO.isSuccess   = true;
                                configurationDTO.responseMsg = "Branch";
                                configurationDTO.user        = user;
                                configurationDTO.branch      = branch;
                                configurationDTO.departments = departments;
                                user.LastSyncDate            = DateTime.Now;
                                IUserService.UpdateData(user);
                                return(configurationDTO);
                            }
                            else
                            {
                                configurationDTO.isSuccess   = false;
                                configurationDTO.responseMsg = "Branch not active";
                                configurationDTO.user        = null;
                                configurationDTO.branch      = null;
                                return(configurationDTO);
                            }
                        }
                    }
                }
                else
                {
                    configurationDTO.isSuccess   = false;
                    configurationDTO.responseMsg = "User doesn't exist";
                    configurationDTO.user        = null;
                    configurationDTO.branch      = null;
                    return(configurationDTO);
                }
            }
            else
            {
                configurationDTO.isSuccess   = false;
                configurationDTO.responseMsg = "User doesn't exist";
                configurationDTO.user        = null;
                configurationDTO.branch      = null;
                return(configurationDTO);
            }
        }