public string Delete(int id = 0)
        {
            //variables
            crm_Roles         role  = null;
            ActionResultModel model = new ActionResultModel();
            int userRole            = 0;

            try
            {
                //Check role has user role
                userRole = _userRoleService.ODataQueryable().Where(x => x.RoleID == id).Count();
                if (userRole > 0)
                {
                    model.IsSuccess = 0;
                    model.Message   = "This user group has users!";
                    return(JsonConvert.SerializeObject(model));
                }
                role = _roleService.ODataQueryable().Where(x => x.ID.Equals(id)).FirstOrDefault();
                //Check role exist
                if (role == null)
                {
                    model.IsSuccess = 0;
                    model.Message   = "User group has not exist!";
                    return(JsonConvert.SerializeObject(model));
                }
                _roleService.Delete(role);
                model.IsSuccess = _unitOfWork.SaveChanges();
                model.Message   = model.IsSuccess > 0 ? "Delete user group successfully!" : "Delete user group unsuccessfully!";
                return(JsonConvert.SerializeObject(model));
            }
            catch
            {
                model.IsSuccess = 0;
                model.Message   = "Delete fail!";
                return(JsonConvert.SerializeObject(model));
            }
        }
Example #2
0
        public ActionResult Create(TenantModel tenantModel)
        {
            if (ModelState.IsValid)
            {
                var _tenantEntity = tenantModel.ToEntity();

                _tenantEntity.Active       = true;
                _tenantEntity.CreatedDate  = DateTime.Now;
                _tenantEntity.CreatedBy    = _userInfo.ID;
                _tenantEntity.ModifiedBy   = _userInfo.ID;
                _tenantEntity.ModifiedDate = DateTime.Now;
                _tenantEntity.DbName       = "MultiOrg_" + _tenantEntity.TenantNameAlias;
                try
                {
                    if (_tenantService.CheckAlias(_tenantEntity.TenantNameAlias))
                    {
                        // create directory folder tenant
                        _pathFiles = "/tenants/" + tenantModel.TenantNameAlias;
                        var _newPath = Server.MapPath(_pathFiles);
                        if (!Directory.Exists(_newPath))
                        {
                            Directory.CreateDirectory(_newPath);
                        }

                        // create file default
                        var _fileDefault     = "default.png";
                        var _sourceFile      = Path.Combine(Server.MapPath(_tempFiles), _fileDefault);
                        var _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _fileDefault);
                        System.IO.File.Copy(_sourceFile, _destinationFile);

                        if (!string.IsNullOrEmpty(_logoModel.FileName))
                        {
                            _tenantEntity.CompanyLogo = _pathFiles + "/" + _logoModel.FileName;

                            //move a file from temps file to tenant folder
                            _sourceFile      = Path.Combine(Server.MapPath(_tempFiles), _logoModel.FileName);
                            _destinationFile = Path.Combine(Server.MapPath(_pathFiles), _logoModel.FileName);
                            if (System.IO.File.Exists(_destinationFile))
                            {
                                System.IO.File.Delete(_destinationFile);
                            }
                            System.IO.File.Move(_sourceFile, _destinationFile);

                            _logoModel = null;
                        }
                        else
                        {
                            _tenantEntity.CompanyLogo = _pathFiles + "/" + _fileDefault;
                        }

                        // insert new tenant
                        _tenantService.Insert(_tenantEntity);
                        _unitOfWork.SaveChanges();

                        // write log
                        _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, true);
                        var result = new SqlQueryExcute().CreateDBByTenant(_tenantEntity.DbName, _tenantEntity.DbUsername, _tenantEntity.DbPassword);

                        // add new user
                        var _tenantId = _tenantService.GetTanentByAlias(_tenantEntity.TenantNameAlias).TenantId;
                        if (_tenantId > 0)
                        {
                            try
                            {
                                var _newUser = new crm_Users();
                                _newUser.Username = tenantModel.Username ?? _tenantEntity.DbUsername;

                                string encryptPassword = "";
                                string passwordSalt    = "";
                                passwordSalt    = EncryptProvider.GenerateSalt();
                                encryptPassword = EncryptProvider.EncryptPassword(tenantModel.Password, passwordSalt);

                                _newUser.PasswordSalt = passwordSalt;
                                _newUser.Password     = encryptPassword;

                                _newUser.TenantId      = _tenantId;
                                _newUser.CreatedDate   = DateTime.Now;
                                _newUser.Active        = true;
                                _newUser.Email         = tenantModel.ContactEmail ?? _tenantEntity.Email;
                                _newUser.DisplayName   = tenantModel.ContactName ?? _tenantEntity.TenantName;
                                _newUser.FullName      = tenantModel.ContactName ?? _tenantEntity.TenantName;
                                _newUser.FacebookURL   = _tenantEntity.FacebookURL;
                                _newUser.TwitterURL    = _tenantEntity.TwitterURL;
                                _newUser.GoogleplusURL = _tenantEntity.GoogleplusURL;
                                _newUser.LinkedURL     = _tenantEntity.LinkedURL;
                                _newUser.Image         = _tenantEntity.CompanyLogo;
                                _newUser.Phone         = tenantModel.ContactPhone;
                                _newUser.Mobile        = tenantModel.MobilePhone;
                                _userService.Insert(_newUser);
                                _unitOfWork.SaveChanges();

                                _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, true);

                                // add tenant admin role
                                var _userId = _userService.GetUserByUsername(_newUser.Username).ID;
                                if (_userId > 0)
                                {
                                    try
                                    {
                                        // AssignedUserId
                                        var _ownTenantEntity = _tenantService.Find(_tenantId);
                                        _ownTenantEntity.AssignedUserId = _userId;
                                        _ownTenantEntity.ObjectState    = ObjectState.Modified;
                                        _tenantService.Update(_ownTenantEntity);
                                        _unitOfWork.SaveChanges();
                                        _helper.InsertLogActive(_logService, _unitOfWork, "Tenant", "Assigned user for tenant", 2, true);

                                        // create group role
                                        var _roleEntity = new crm_Roles();

                                        //Console.WriteLine(((WeekDays)1).ToString());

                                        // TenantAdmin = 512
                                        _roleEntity.RoleName       = UserGroupEnum.TenantAdmin.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.TenantAdmin + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.TenantAdmin;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // add  Manager = 256
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Manager.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Manager + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Manager;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // add  Support = 128
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Support.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Support + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Support;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // Marketing=64
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Marketing.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Marketing + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Marketing;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // Sales = 32
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.Sales.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.Sales + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.Sales;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        //  NormalUser = 16
                                        _roleEntity                = new crm_Roles();
                                        _roleEntity.RoleName       = UserGroupEnum.NormalUser.ToString();
                                        _roleEntity.Active         = true;
                                        _roleEntity.MaskPermission = (int)UserGroupEnum.NormalUser + 15;
                                        _roleEntity.TenantId       = _tenantId;
                                        _roleEntity.PermissionType = (int)UserGroupEnum.NormalUser;
                                        _roleService.Insert(_roleEntity);
                                        _unitOfWork.SaveChanges();

                                        // map role tenant admin
                                        var _newRole = new crm_UserRoles();
                                        _newRole.RoleID = _roleService.GetRoleIdByPermisstionType(_tenantId, (int)UserGroupEnum.TenantAdmin);
                                        _newRole.UserID = _userId;
                                        _userRoleService.Insert(_newRole);
                                        _unitOfWork.SaveChanges();
                                        _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, true);
                                    }
                                    catch
                                    {
                                        _helper.InsertLogActive(_logService, _unitOfWork, "User Role", "Insert role tenant admin for user", 1, false);
                                    }
                                }
                            }
                            catch
                            {
                                _helper.InsertLogActive(_logService, _unitOfWork, "Users", "Insert user tenant admin", 1, false);
                            }
                        }
                    }
                    MessageBoxModel.ShowMessage = "Add tenant " + _tenantEntity.TenantName + " success!";
                    return(RedirectToAction("Index"));
                }
                catch
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "Tenants", "Insert new tenant", 1, false);
                    return(View(tenantModel));
                }
            }

            return(View(tenantModel));
        }
        public string AddEditAction(UserGroupSubmitModel model)
        {
            //Variables
            crm_Roles         role        = new crm_Roles();
            ActionResultModel returnModel = new ActionResultModel();
            crm_Tenants       tenant      = null;
            bool     isExist            = false;
            UserInfo usInfo             = null;
            int      totalNameDuplicate = 0;


            //Check permission type valid
            foreach (UserGroupEnum item in Enum.GetValues(typeof(UserGroupEnum)))
            {
                if (model.PermissionTypeID == Convert.ToInt32(item))
                {
                    isExist = true;
                    break;
                }
            }

            if (!isExist)
            {
                returnModel.IsSuccess = 0;
                returnModel.Message   = "Permission Type is not exist in system!";
                return(JsonConvert.SerializeObject(returnModel));
            }

            if (model.ID > 0)
            {
                role = _roleService.ODataQueryable().Where(x => x.ID.Equals(model.ID)).FirstOrDefault();//.GetRoleByID(model.ID);
            }
            //Check usergroup exist
            if (role == null)
            {
                returnModel.IsSuccess = 0;
                returnModel.Message   = "User group is not exist in system!";
                return(JsonConvert.SerializeObject(returnModel));
            }
            //Check usergroup name exist
            //totalNameDuplicate = _roleService.CheckExistRoleName(model.Name.Trim());
            //if ((model.ID <= 0 && totalNameDuplicate > 0) //Case create new
            //    || (model.ID > 0 && totalNameDuplicate > 1 && model.OldName.Trim() == model.Name.Trim())//case edit that dont change name
            //    || (model.ID > 0 && totalNameDuplicate > 0 && model.OldName.Trim() != model.Name.Trim()))//case edit that change name
            //{
            //    returnModel.IsSuccess = 0;
            //    returnModel.Message = "User group's name is not exist in system!";
            //    return JsonConvert.SerializeObject(returnModel);
            //}

            /*
             * author: ri.khanh
             * date:2014.07.21
             * fuction:check duplication roleName in 1 same group
             */

            if (!CheckDuplicatedRolename(model.Name, model.TenantId, model.ID))
            {
                returnModel.IsSuccess = 0;
                returnModel.Message   = "User group's name is not exist in system!";
                return(JsonConvert.SerializeObject(returnModel));
            }


            usInfo = System.Web.HttpContext.Current.Session["UserInfo"] as UserInfo;
            //Set data to insert or update
            role.Active         = model.Active != null ? true : false;
            role.RoleName       = WebUtility.HtmlEncode(model.Name.Trim());
            role.Description    = WebUtility.HtmlEncode((model.Description + "").Trim());
            role.PermissionType = model.PermissionTypeID;
            role.MaskPermission = model.PermissionTypeID;

            //ri.khanh
            if (userInfo.TenanID.Equals(0))
            {
                if (!model.PermissionTypeID.Equals((int)UserGroupEnum.Operator))
                {
                    if (model.TenantId.Equals(0))
                    {
                        returnModel.IsSuccess = 0;
                        returnModel.Message   = "please select tentant!";
                        return(JsonConvert.SerializeObject(returnModel));
                    }
                    role.TenantId = model.TenantId;
                }
                else
                {
                    role.TenantId = 0;
                }
            }

            //If logged in user is tenant or lower will set tenant id of logged in user
            foreach (int curBitMask in usInfo.BitMask)
            {
                if (model.ID <= 0 && curBitMask <= (int)UserGroupEnum.TenantAdmin)
                {
                    role.TenantId = usInfo.TenanID;
                }
            }

            //Submit data
            if (model.ID <= 0)
            {
                _roleService.Insert(role);
            }
            else
            {
                role.ObjectState = ObjectState.Modified;
            }

            returnModel.IsSuccess = _unitOfWork.SaveChanges();
            returnModel.Message   = returnModel.IsSuccess > 0 ? "Data were saved successfully!" : "Data were saved unsuccessfully!";
            //Write log
            //Action successfully
            if (returnModel.IsSuccess > 0)
            {
                //Case insert
                if (model.ID > 0)
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "UserGroup", "Update new usergroup", 2, true);
                }
                else//Case update
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "UserGroup", "Insert usergroup", 1, true);
                }
            }
            else//Action fail
            {
                //Case insert
                if (model.ID > 0)
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "UserGroup", "Update new usergroup", 2, false);
                }
                else//Case update
                {
                    _helper.InsertLogActive(_logService, _unitOfWork, "UserGroup", "Insert usergroup", 1, false);
                }
            }

            return(JsonConvert.SerializeObject(returnModel));
        }
        /// <summary>
        /// The View that to add or edit data of usergroup
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult AddEdit(int id = 0)
        {
            //variables
            crm_Roles      roleItem   = null;
            UserGroupModel model      = new UserGroupModel();
            UserInfo       usInfo     = null;
            int            maxBitMask = 0;

            try
            {
                //Get role detail
                if (id > 0)
                {
                    roleItem = _roleService.GetRoleByID(id);
                }
                usInfo = System.Web.HttpContext.Current.Session["UserInfo"] as UserInfo;
                //Get max BitMask of user
                foreach (int curBitMask in usInfo.BitMask)
                {
                    if (curBitMask > maxBitMask)
                    {
                        maxBitMask = curBitMask;
                    }
                }
                model.ListPermType = new Dictionary <int, string>();
                model.ListPermType.Add(0, "Choose permission type...");

                //Get list permission enum
                Array enumUsergroup = Enum.GetValues(typeof(UserGroupEnum));
                int   count         = 1;
                foreach (UserGroupEnum usergroup in enumUsergroup)
                {
                    //Don't render super admin permission into combobox
                    if (count == enumUsergroup.Length)
                    {
                        break;
                    }
                    int bitmask = Convert.ToInt32(usergroup);
                    //Render permission corresponding logged user
                    if (bitmask <= maxBitMask)
                    {
                        model.ListPermType.Add(bitmask, usergroup.ToString());
                    }
                    count++;
                }

                /*
                 * author: ri.khanh
                 * date : 2014.21.07
                 * get tenant add to list
                 */
                var listTenant = new Dictionary <int, string>();

                var listTemp = (from t in _tenantService.ODataQueryable()
                                select new
                {
                    TeantName = t.TenantName,
                    TenantId = t.TenantId
                });                //.ToDictionary(x => x.TenantId, x => x.TeantName);

                model.ListTenant = new Dictionary <int, string>();
                model.ListTenant.Add(0, "Choose tenant");
                foreach (var item in listTemp)
                {
                    model.ListTenant.Add(item.TenantId, item.TeantName);
                }
                // model.ListTenant = listTenant;

                //end
                if (roleItem != null)
                {
                    //set value for model
                    model.ID               = roleItem.ID;
                    model.Name             = WebUtility.HtmlDecode(roleItem.RoleName);
                    model.Active           = roleItem.Active.HasValue ? roleItem.Active.Value : false;
                    model.PermissionTypeID = roleItem.PermissionType.HasValue ? roleItem.PermissionType.Value : 0;
                    model.Description      = WebUtility.HtmlDecode(roleItem.Description);

                    model.TenantId = roleItem.TenantId;
                }

                return(View(model));
            }
            catch
            {
                return(View("Index"));
            }
        }