public async Task <IActionResult> AddAssignUser(AssignUserModel model) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageOutletManagement)) { return(AccessDeniedView()); } //validate store if (model.SelectedUserStoreId == 0) { ModelState.AddModelError(string.Empty, "Store is required"); _notificationService.ErrorNotification("Store is required"); } try { //Store StoreUserAssign storeUserAssign = new StoreUserAssign { StoreId = model.SelectedUserStoreId, StoreUserAssignStore = new List <StoreUserAssignStores>() }; //Add user foreach (var user in model.SelectedUserIds) { StoreUserAssignStores storeUserAssignStores = new StoreUserAssignStores { StoreUserAssignId = storeUserAssign.Id, UserId = user, }; storeUserAssign.StoreUserAssignStore.Add(storeUserAssignStores); } await _outletManagementService.InsertAssignUser(storeUserAssign); return(new NullJsonResult()); } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); _notificationService.ErrorNotification(e.Message); return(Json(e.Message)); } }
public async Task <IActionResult> EditAssignUser(AssignUserModel model, bool continueEditing) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageOutletManagement)) { return(AccessDeniedView()); } var assignUser = await _outletManagementService.GetAssignUserByIdAsync(model.Id); if (assignUser == null) { return(RedirectToAction("Index")); } //validate store users var allUsers = await _userService.GetUsersAsync(); var newUsers = new List <User>(); foreach (var user in allUsers) { if (model.SelectedUserIds.Contains(user.Id)) { newUsers.Add(user); } } if (model.SelectedUserIds.Count == 0) { _notificationService.ErrorNotification("User is required"); model = await _managementModelFactory.PrepareAssignUserModel(model, assignUser); model.SelectedUserIds = new List <int>(); return(View(model)); } if (ModelState.IsValid) { try { assignUser.StoreId = model.SelectedUserStoreId; //users List <StoreUserAssignStores> storeUserAssignStoresList = new List <StoreUserAssignStores>(); foreach (var user in allUsers) { if (model.SelectedUserIds.Contains(user.Id)) { //new user if (assignUser.StoreUserAssignStore.Count(mapping => mapping.UserId == user.Id) == 0) { StoreUserAssignStores storeUserAssignStores = new StoreUserAssignStores { StoreUserAssignId = assignUser.StoreId, UserId = user.Id }; assignUser.StoreUserAssignStore.Add(storeUserAssignStores); } } else { //remove user if (assignUser.StoreUserAssignStore.Count(mapping => mapping.UserId == user.Id) > 0) { _outletManagementService.DeleteAssignUserUsers(model.Id, user); } } } _outletManagementService.UpdateAssignUser(assignUser); _notificationService.SuccessNotification("Assign users has been updated successfully."); //set to active tab SaveSelectedTabName("assignUserTab", true); if (!continueEditing) { return(RedirectToAction("Index")); } return(RedirectToAction("EditAssignUser", new { id = assignUser.Id })); } catch (Exception e) { _notificationService.ErrorNotification(e.Message); } } model = await _managementModelFactory.PrepareAssignUserModel(model, assignUser); return(View(model)); }