Пример #1
0
        public ActionResult UserRoles(string userId, string[] selectedRoles)
        {
            if (selectedRoles == null)
            {
                return(RedirectToAction("UserRoles", new { userId }));
            }
            List <string> seletRoleIds = new List <string>();

            seletRoleIds.AddRange(selectedRoles);
            foreach (var role in _repo.GetRoles())
            {
                #region Add Role if is in selectRoles and is not in UserRoles

                if (seletRoleIds.Contains(role.Id) && !_repo.UserHasRole(userId, role.Id))
                {
                    _repo.AddUserRole(userId, role.Id);
                }
                #endregion

                #region Delete Role if is in UserRoles  and is not in selectRoles
                if (!seletRoleIds.Contains(role.Id) && _repo.UserHasRole(userId, role.Id))
                {
                    UserRole uRole = _repo.GetUserRole(userId, role.Id);
                    _repo.DeleteUserRole(uRole);
                }
                #endregion
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult Create(AddCustomerViewModel form, HttpPostedFileBase UserAvatar)
        {
            if (ModelState.IsValid)
            {
                #region Check for duplicate username or email

                if (form.UserName != null)
                {
                    if (_usersRepo.UserNameExists(form.UserName))
                    {
                        ViewBag.Message       = "کاربر دیگری با همین نام کاربری در سیستم ثبت شده";
                        ViewBag.GeoDivisionId = new SelectList(_geoDivisonsRepo.GetGeoDivisionsByType((int)GeoDivisionType.State), "Id", "Title", form.GeoDivisionId);

                        return(View(form));
                    }
                }
                if (_usersRepo.PhoneNumberExists(form.PhoneNumber))
                {
                    ViewBag.Message       = "کاربر دیگری با همین شماره تلفن در سیستم ثبت شده";
                    ViewBag.GeoDivisionId = new SelectList(_geoDivisonsRepo.GetGeoDivisionsByType((int)GeoDivisionType.State), "Id", "Title", form.GeoDivisionId);

                    return(View(form));
                }
                if (_usersRepo.EmailExists(form.Email))
                {
                    ViewBag.Message       = "کاربر دیگری با همین ایمیل در سیستم ثبت شده";
                    ViewBag.GeoDivisionId = new SelectList(_geoDivisonsRepo.GetGeoDivisionsByType((int)GeoDivisionType.State), "Id", "Title", form.GeoDivisionId);

                    return(View(form));
                }
                #endregion

                #region Upload Image
                if (UserAvatar != null)
                {
                    var newFileName = Guid.NewGuid() + Path.GetExtension(UserAvatar.FileName);
                    UserAvatar.SaveAs(Server.MapPath("/Files/UserAvatars/" + newFileName));

                    form.Avatar = newFileName;
                }
                #endregion

                var userModel = new User()
                {
                    UserName    = form.UserName,
                    FirstName   = form.FirstName,
                    LastName    = form.LastName,
                    Email       = form.Email,
                    PhoneNumber = form.PhoneNumber,
                    Avatar      = form.Avatar
                };
                userModel.UserName = form.UserName ?? form.PhoneNumber;
                _usersRepo.CreateUser(userModel, form.Password);
                _usersRepo.AddUserRole(userModel.Id, StaticVariables.CustomerRoleId);

                var customer = new Customer()
                {
                    UserId        = userModel.Id,
                    IsDeleted     = false,
                    NationalCode  = form.NationalCode,
                    Address       = form.Address,
                    PostalCode    = form.PostalCode,
                    GeoDivisionId = form.GeoDivisionId
                };
                _repo.Add(customer);

                return(RedirectToAction("Index"));
            }

            ViewBag.GeoDivisionId = new SelectList(_geoDivisonsRepo.GetGeoDivisionsByType((int)GeoDivisionType.State), "Id", "Title", form.GeoDivisionId);
            return(View(form));
        }