public ActionResult Edit(int id = 0) { if (!Authorized(RoleType.SystemManager)) { return(Error(Loc.Dic.error_no_permission)); } ApprovalRouteModel model = new ApprovalRouteModel(); List <User> usersSelectList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { model.ApprovalRoute = routesRep.GetEntity(id, "Users_ApprovalStep.User"); if (model.ApprovalRoute == null) { return(Error(Loc.Dic.error_database_error)); } usersSelectList = usersRep.GetList() .Where(user => ((RoleType)user.Roles & RoleType.OrdersApprover) == RoleType.OrdersApprover) .ToList(); } ViewBag.UsersSelectList = new SelectList(usersSelectList, "Id", "FullName"); return(View(model)); }
public ActionResult DeleteConfirmed(int id) { if (!Authorized(RoleType.SystemManager)) { return(Error(Loc.Dic.error_no_permission)); } Users_ApprovalRoutes route; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { route = routesRep.GetEntity(id); if (route == null) { return(Error(Loc.Dic.error_database_error)); } if (!routesRep.Delete(id)) { return(Error(Loc.Dic.error_database_error)); } } return(RedirectToAction("Index")); }
public ActionResult Create() { if (!Authorized(RoleType.UsersManager)) return Error(Loc.Dic.error_no_permission); List<string> roleNames = GetRoleNames(); List<SelectListItemDB> ApprovalRoutesList = new List<SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; SelectList languagesList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (LanguagesRepository languagesRep = new LanguagesRepository()) { ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); languagesList = new SelectList(languagesRep.GetList().ToList(), "Id", "Name"); } ViewBag.RolesList = roleNames; ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); ViewBag.LanguagesList = languagesList; return View(); }
public ActionResult Edit(int id = 0) { if (Authorized(RoleType.SystemManager)) { User user; List <SelectListItemDB> ApprovalRoutesList = new List <SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { user = usersRep.GetEntity(id); ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); if (user != null) { if (user.CompanyId != CurrentUser.CompanyId) { return(Error(Loc.Dic.error_no_permission)); } ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); List <string> roleNames = GetRoleNames(); ViewBag.RolesList = roleNames; ViewBag.ExistingRoles = Roles.GetAllRoles((RoleType)user.Roles) .Select(x => x.ToString()) .ToList(); return(View(user)); } else { return(Error(Loc.Dic.error_user_not_found)); } } } else { return(Error(Loc.Dic.error_no_permission)); } }
public ActionResult Create(ApprovalRouteModel model) { if (!Authorized(RoleType.SystemManager)) { return(Error(Loc.Dic.error_no_permission)); } Users_ApprovalRoutes newApprovalRoute = new Users_ApprovalRoutes(); newApprovalRoute.Name = model.Name; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { var usersIds = model.Steps.Select(x => x.UserId).Distinct(); List <User> routeApprovers = usersRep.GetList().Where(x => usersIds.Contains(x.Id)).ToList(); if (usersIds.Count() != routeApprovers.Count) { return(Error(Loc.Dic.error_invalid_form)); } foreach (var approver in routeApprovers) { if (!Roles.HasRole(approver.Roles, RoleType.OrdersApprover)) { return(Error(Loc.Dic.error_invalid_form)); } } foreach (var step in model.Steps) { newApprovalRoute.Users_ApprovalStep.Add( new Users_ApprovalStep() { UserId = step.UserId, StepNumber = step.StepNumber } ); } if (!routesRep.Create(newApprovalRoute)) { return(Error(Loc.Dic.error_database_error)); } } return(RedirectToAction("Index")); }
public ActionResult Details(int id = 0) { if (!Authorized(RoleType.SystemManager)) { return(Error(Loc.Dic.error_no_permission)); } Users_ApprovalRoutes route; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { route = routesRep.GetEntity(id, "Users_ApprovalStep.User"); } if (route == null) { return(Error(Loc.Dic.error_database_error)); } return(View(route)); }
public ActionResult Index(int page = FIRST_PAGE, string sortby = DEFAULT_SORT, string order = DEFAULT_DESC_ORDER) { if (!Authorized(RoleType.UsersManager)) { return(Error(Loc.Dic.error_no_permission)); } IEnumerable <Users_ApprovalRoutes> routes; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { routes = routesRep.GetList(); if (routes == null) { return(Error(Loc.Dic.error_orders_get_error)); } routes = Pagination(routes, page, sortby, order); return(View(routes.ToList())); } }
public ActionResult Create() { if (!Authorized(RoleType.UsersManager)) { return(Error(Loc.Dic.error_no_permission)); } List <string> roleNames = GetRoleNames(); List <SelectListItemDB> ApprovalRoutesList = new List <SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; SelectList languagesList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (LanguagesRepository languagesRep = new LanguagesRepository()) { ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); languagesList = new SelectList(languagesRep.GetList().ToList(), "Id", "Name"); } ViewBag.RolesList = roleNames; ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); ViewBag.LanguagesList = languagesList; return(View()); }
public ActionResult Create(ApprovalRouteModel model) { if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); Users_ApprovalRoutes newApprovalRoute = new Users_ApprovalRoutes(); newApprovalRoute.Name = model.Name; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { var usersIds = model.Steps.Select(x => x.UserId).Distinct(); List<User> routeApprovers = usersRep.GetList().Where(x => usersIds.Contains(x.Id)).ToList(); if(usersIds.Count() != routeApprovers.Count) return Error(Loc.Dic.error_invalid_form); foreach (var approver in routeApprovers) { if (!Roles.HasRole(approver.Roles, RoleType.OrdersApprover)) return Error(Loc.Dic.error_invalid_form); } foreach (var step in model.Steps) { newApprovalRoute.Users_ApprovalStep.Add( new Users_ApprovalStep() { UserId = step.UserId, StepNumber = step.StepNumber } ); } if (!routesRep.Create(newApprovalRoute)) return Error(Loc.Dic.error_database_error); } return RedirectToAction("Index"); }
public ActionResult Create(CreateOrderModel model) { /// Validating user input if (!Authorized(RoleType.OrdersWriter)) return Error(Loc.Dic.error_no_permission); if (!ModelState.IsValid) return Error(Loc.Dic.error_invalid_form); if (String.IsNullOrEmpty(model.ItemsString)) return Error(Loc.Dic.error_invalid_form); List<Orders_OrderToItem> ItemsList = ItemsFromString(model.ItemsString, 0); if (ItemsList == null || ItemsList.Count == 0) return Error(Loc.Dic.error_invalid_form); if (model.IsFutureOrder && !Authorized(RoleType.FutureOrderWriter)) return Error(Loc.Dic.Error_NoPermission); if (model.Allocations == null || model.Allocations.Where(x => x.IsActive).Count() == 0) return Error(Loc.Dic.error_invalid_form); model.Allocations = model.Allocations.Where(x => x.IsActive).ToList(); decimal totalOrderPrice = (decimal.Floor(ItemsList.Sum(x => x.SingleItemPrice * x.Quantity) * 1000) / 1000); decimal totalAllocation = (decimal.Floor(model.Allocations.Sum(x => x.Amount) * 1000) / 1000); if (totalOrderPrice != totalAllocation) return Error(Loc.Dic.error_order_insufficient_allocation); // Initializing needed temporary variables bool allowExeeding = true; List<Orders_OrderToAllocation> AllocationsToCreate = new List<Orders_OrderToAllocation>(); // Setting order properties model.Order.UserId = CurrentUser.UserId; model.Order.Price = totalOrderPrice; model.Order.IsFutureOrder = model.IsFutureOrder; using (AllocationRepository allocationsRep = new AllocationRepository(CurrentUser.CompanyId)) using (BudgetsRepository budgetsRep = new BudgetsRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { Budget currentBudget = budgetsRep.GetList().SingleOrDefault(x => x.IsActive); if (currentBudget == null) return Error(Loc.Dic.error_database_error); model.Order.BudgetId = currentBudget.Id; int[] orderAllocationsIds = model.Allocations.Select(x => x.AllocationId).Distinct().ToArray(); var allocationsData = allocationsRep.GetAllocationsData(orderAllocationsIds, StatusType.Pending); bool IsValidAllocations = (allocationsData.Count == orderAllocationsIds.Length) && model.Allocations.All(x => (x.MonthId == null || (x.MonthId >= 1 && x.MonthId <= 12)) && x.Amount > 0); if (!IsValidAllocations) return Error(Loc.Dic.error_invalid_form); if (model.IsFutureOrder) { foreach (var allocationData in allocationsData) { List<OrderAllocation> allocationMonths = model.Allocations.Where(x => x.AllocationId == allocationData.AllocationId).ToList(); foreach (var month in allocationMonths) { if (month.MonthId == DateTime.Now.Month) { OrderAllocation currentAllocation = model.Allocations.SingleOrDefault(x => x.AllocationId == allocationData.AllocationId); var newAllocations = allocationsRep.GenerateOrderAllocations(allocationData, currentAllocation.Amount, allowExeeding, DateTime.Now.Month); if (newAllocations == null) return Error(Loc.Dic.error_order_insufficient_allocation); AllocationsToCreate.AddRange(newAllocations); } else { var monthData = allocationData.Months.SingleOrDefault(x => x.MonthId == month.MonthId); if (!allowExeeding && month.Amount > monthData.RemainingAmount) return Error(Loc.Dic.error_order_insufficient_allocation); Orders_OrderToAllocation newAllocation = new Orders_OrderToAllocation() { AllocationId = allocationData.AllocationId, MonthId = month.MonthId.Value, Amount = month.Amount, OrderId = 0 }; AllocationsToCreate.Add(newAllocation); } } } } else { foreach (var allocationData in allocationsData) { OrderAllocation currentAllocation = model.Allocations.SingleOrDefault(x => x.AllocationId == allocationData.AllocationId); var newAllocations = allocationsRep.GenerateOrderAllocations(allocationData, currentAllocation.Amount, allowExeeding, DateTime.Now.Month); if (newAllocations == null) return Error(Loc.Dic.error_order_insufficient_allocation); AllocationsToCreate.AddRange(newAllocations); } } if (!CurrentUser.OrdersApprovalRouteId.HasValue) { model.Order.NextOrderApproverId = null; model.Order.StatusId = (int)StatusType.ApprovedPendingInvoice; } else { Users_ApprovalRoutes orderRoute = routesRep.GetEntity(CurrentUser.OrdersApprovalRouteId.Value, "Users_ApprovalStep"); Users_ApprovalStep firstStep = orderRoute.Users_ApprovalStep.OrderBy(x => x.StepNumber).FirstOrDefault(); if (firstStep != null) { model.Order.ApprovalRouteId = orderRoute.Id; model.Order.ApprovalRouteStep = firstStep.StepNumber; model.Order.NextOrderApproverId = firstStep.UserId; model.Order.StatusId = (int)StatusType.Pending; } else { model.Order.ApprovalRouteStep = null; model.Order.NextOrderApproverId = null; model.Order.StatusId = (int)StatusType.ApprovedPendingInvoice; } } } using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId)) using (OrderToItemRepository orderToItemRep = new OrderToItemRepository()) using (OrderToAllocationRepository orderAllocationsRep = new OrderToAllocationRepository()) { bool creationError = false; if (!ordersRep.Create(model.Order)) return Error(Loc.Dic.error_orders_create_error); model.Order = ordersRep.GetEntity(model.Order.Id, "User", "User1"); foreach (Orders_OrderToItem item in ItemsList) { item.OrderId = model.Order.Id; if (!orderToItemRep.Create(item)) { creationError = true; break; } } foreach (var allocation in AllocationsToCreate) { allocation.OrderId = model.Order.Id; if (!orderAllocationsRep.Create(allocation)) { creationError = true; break; } } if (creationError) { ordersRep.Delete(model.Order.Id); return Error(Loc.Dic.error_orders_create_error); } } using (OrdersHistoryRepository ordersHistoryRepository = new OrdersHistoryRepository(CurrentUser.CompanyId, CurrentUser.UserId, model.Order.Id)) { Orders_History orderHis = new Orders_History(); ordersHistoryRepository.Create(orderHis, (int)HistoryActions.Created, model.NotesForApprover); } if (model.Order.NextOrderApproverId.HasValue) { SendNotifications.OrderPendingApproval(model.Order, Url); } return RedirectToAction("MyOrders"); }
public ActionResult ModifyStatus(string approverNotes, string selectedStatus, int id = 0) { int? historyActionId = null; if (!Authorized(RoleType.OrdersApprover)) return Error(Loc.Dic.error_no_permission); if (approverNotes != null && approverNotes.Length > 250) return Error(Loc.Dic.error_order_notes_too_long); Order orderFromDB; using (OrdersHistoryRepository ordersHistoryRep = new OrdersHistoryRepository(CurrentUser.CompanyId, CurrentUser.UserId, id)) using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId)) using (AllocationRepository allocationsRep = new AllocationRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { orderFromDB = ordersRep.GetEntity(id, "User", "Users_ApprovalRoutes"); if (orderFromDB == null) return Error(Loc.Dic.error_order_get_error); if ((orderFromDB.NextOrderApproverId != CurrentUser.UserId) && !Authorized(RoleType.SuperApprover)) return Error(Loc.Dic.error_no_permission); if (orderFromDB.StatusId == (int)StatusType.OrderCancelled) return Error(Loc.Dic.error_order_is_canceled); if (orderFromDB.StatusId >= (int)StatusType.ApprovedPendingInvoice) return Error(Loc.Dic.error_order_already_approved); List<Users_ApprovalStep> orderRouteSteps = orderFromDB.Users_ApprovalRoutes.Users_ApprovalStep.OrderBy(x => x.StepNumber).ToList(); Users_ApprovalStep firstStep = orderRouteSteps.FirstOrDefault(); Users_ApprovalStep currentStep = orderRouteSteps.Single(x => x.StepNumber == orderFromDB.ApprovalRouteStep); Users_ApprovalStep nextStep = orderRouteSteps.FirstOrDefault(x => x.StepNumber > currentStep.StepNumber); if (selectedStatus == Loc.Dic.ApproveOrder) { if (Authorized(RoleType.SuperApprover) || nextStep == null) { orderFromDB.ApprovalRouteStep = null; orderFromDB.NextOrderApproverId = null; orderFromDB.StatusId = (int)StatusType.ApprovedPendingInvoice; historyActionId = (int)HistoryActions.PassedApprovalRoute; } else { orderFromDB.ApprovalRouteStep = nextStep.StepNumber; orderFromDB.NextOrderApproverId = nextStep.UserId; orderFromDB.StatusId = (int)StatusType.PartiallyApproved; historyActionId = (int)HistoryActions.PartiallyApproved; } } else if (selectedStatus == Loc.Dic.DeclineOrder) { orderFromDB.NextOrderApproverId = null; orderFromDB.StatusId = (int)StatusType.Declined; historyActionId = (int)HistoryActions.Declined; } else if (selectedStatus == Loc.Dic.SendBackToUser) { orderFromDB.ApprovalRouteStep = firstStep.StepNumber; orderFromDB.NextOrderApproverId = firstStep.UserId; orderFromDB.StatusId = (int)StatusType.PendingOrderCreator; historyActionId = (int)HistoryActions.ReturnedToCreator; } orderFromDB.LastStatusChangeDate = DateTime.Now; if (ordersRep.Update(orderFromDB) == null) return Error(Loc.Dic.error_database_error); Orders_History orderHistory = new Orders_History(); if (historyActionId.HasValue) ordersHistoryRep.Create(orderHistory, historyActionId.Value, approverNotes); //EmailMethods emailMethods = new EmailMethods("*****@*****.**", Loc.Dic.OrdersSystem, "noreply50100200"); //string emailSubject = String.Format("{0} {1} {2} {3} {4}", Loc.Dic.Order, orderFromDB.OrderNumber, Translation.Status((StatusType)orderFromDB.StatusId), Loc.Dic.By, CurrentUser.FullName); //StringBuilder emailBody = new StringBuilder(); //emailBody.AppendLine(emailSubject); //emailBody.AppendLine(); //emailBody.AppendLine(String.Format("{0}: {1}", Loc.Dic.SeeDetailsAt, Url.Action("Details", "Orders", new { id = id }, "http"))); //emailMethods.sendGoogleEmail(orderFromDB.User.Email, orderFromDB.User.FirstName, emailSubject, emailBody.ToString()); SendNotifications.OrderStatusChanged(orderFromDB, CurrentUser, Url); if (orderFromDB.StatusId == (int)StatusType.PartiallyApproved) SendNotifications.OrderPendingApproval(orderFromDB, Url); return RedirectToAction("PendingOrders"); } }
public ActionResult Delete(int id = 0) { if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); Users_ApprovalRoutes route; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { route = routesRep.GetEntity(id, "Users_ApprovalStep.User"); } if (route == null) return Error(Loc.Dic.error_database_error); return View(route); }
public ActionResult Index(int page = FIRST_PAGE, string sortby = DEFAULT_SORT, string order = DEFAULT_DESC_ORDER) { if (!Authorized(RoleType.UsersManager)) return Error(Loc.Dic.error_no_permission); IEnumerable<Users_ApprovalRoutes> routes; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { routes = routesRep.GetList(); if (routes == null) return Error(Loc.Dic.error_orders_get_error); routes = Pagination(routes, page, sortby, order); return View(routes.ToList()); } }
public ActionResult Edit(int id = 0) { if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); ApprovalRouteModel model = new ApprovalRouteModel(); List<User> usersSelectList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { model.ApprovalRoute = routesRep.GetEntity(id, "Users_ApprovalStep.User"); if (model.ApprovalRoute == null) return Error(Loc.Dic.error_database_error); usersSelectList = usersRep.GetList() .Where(user => ((RoleType)user.Roles & RoleType.OrdersApprover) == RoleType.OrdersApprover) .ToList(); } ViewBag.UsersSelectList = new SelectList(usersSelectList, "Id", "FullName"); return View(model); }
public ActionResult DeleteConfirmed(int id) { if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); Users_ApprovalRoutes route; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { route = routesRep.GetEntity(id); if (route == null) return Error(Loc.Dic.error_database_error); if (!routesRep.Delete(id)) return Error(Loc.Dic.error_database_error); } return RedirectToAction("Index"); }
public ActionResult Edit(User user, string[] roleNames) { if (Authorized(RoleType.SystemManager)) { if (user.DefaultApprovalRouteId == -1) user.DefaultApprovalRouteId = null; if (ModelState.IsValid) { User userFromDatabase; using (UsersRepository userRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { userFromDatabase = userRep.GetEntity(user.Id); if (userFromDatabase != null) { if (user.DefaultApprovalRouteId.HasValue) { var route = routesRep.GetEntity(user.DefaultApprovalRouteId.Value); if (route == null) return Error(Loc.Dic.error_invalid_form); } RoleType combinedRoles = RoleType.None; List<RoleType> forbiddenRoles = GetForbiddenRoles(); foreach (string roleName in roleNames) { RoleType role; if (Enum.TryParse(roleName, out role) && !forbiddenRoles.Contains(role)) { combinedRoles = Roles.CombineRoles(combinedRoles, role); } else { return Error(Loc.Dic.error_invalid_form); } } userFromDatabase.FirstName = user.FirstName; userFromDatabase.LastName = user.LastName; userFromDatabase.Email = user.Email; userFromDatabase.Roles = (int)combinedRoles; userFromDatabase.DefaultApprovalRouteId = user.DefaultApprovalRouteId.HasValue && user.DefaultApprovalRouteId.Value == -1 ? null : user.DefaultApprovalRouteId; User updatedUser = userRep.Update(userFromDatabase); if (updatedUser != null) return RedirectToAction("Index"); else return Error(Loc.Dic.error_database_error); } else { return Error(Loc.Dic.error_user_not_found); } } } else { return Error(ModelState); } } else { return Error(Loc.Dic.error_no_permission); } }
public ActionResult Create(User user, string[] roleNames) { if (!ModelState.IsValid) { List<string> allRoleNames = GetRoleNames(); List<SelectListItemDB> ApprovalRoutesList = new List<SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; SelectList languagesList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (LanguagesRepository languagesRep = new LanguagesRepository()) { ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); languagesList = new SelectList(languagesRep.GetList().ToList(), "Id", "Name"); } ViewBag.RolesList = allRoleNames; ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); ViewBag.LanguagesList = languagesList; return View(user); } if (user.DefaultApprovalRouteId == -1) user.DefaultApprovalRouteId = null; if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); int companyUserCount = 0; int companyUserLimit = 0; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (PendingUsersRepository pendingUsersRep = new PendingUsersRepository()) using (CompaniesRepository companiesRep = new CompaniesRepository()) { if (user.DefaultApprovalRouteId.HasValue) { var route = routesRep.GetEntity(user.DefaultApprovalRouteId.Value); if (route == null) return Error(Loc.Dic.error_invalid_form); } try { companyUserCount = usersRep.GetList().Where(x => x.IsActive).Count() + pendingUsersRep.GetList().Where(x => x.CompanyId == CurrentUser.CompanyId).Count(); companyUserLimit = companiesRep.GetEntity(CurrentUser.CompanyId).UsersLimit; } catch { return Error(Loc.Dic.error_database_error); } bool userExists = usersRep.GetList().Any(x => x.CompanyId == CurrentUser.CompanyId && x.Email == user.Email); bool pendingUserExists = pendingUsersRep.GetList().Any(x => x.CompanyId == CurrentUser.CompanyId && x.Email == user.Email); if (userExists || pendingUserExists) return Error(Loc.Dic.error_users_exist_error); } if (companyUserCount >= companyUserLimit) return Error(Loc.Dic.error_users_limit_reached); user.CompanyId = CurrentUser.CompanyId; user.CreationTime = DateTime.Now; RoleType combinedRoles = RoleType.None; List<RoleType> forbiddenRoles = GetForbiddenRoles(); if (roleNames == null || roleNames.Count() == 0) return Error(Loc.Dic.error_invalid_form); foreach (string roleName in roleNames) { RoleType role; if (!Enum.TryParse(roleName, out role) || forbiddenRoles.Contains(role)) return Error(Loc.Dic.error_invalid_form); combinedRoles = Roles.CombineRoles(combinedRoles, role); } user.Roles = (int)combinedRoles; user.DefaultApprovalRouteId = user.DefaultApprovalRouteId.HasValue && user.DefaultApprovalRouteId.Value == -1 ? null : user.DefaultApprovalRouteId; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { if (!usersRep.Create(user)) return Error(Loc.Dic.error_users_create_error); } return RedirectToAction("Index"); }
public ActionResult Edit(int id = 0) { if (Authorized(RoleType.SystemManager)) { User user; List<SelectListItemDB> ApprovalRoutesList = new List<SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { user = usersRep.GetEntity(id); ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); if (user != null) { if (user.CompanyId != CurrentUser.CompanyId) return Error(Loc.Dic.error_no_permission); ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); List<string> roleNames = GetRoleNames(); ViewBag.RolesList = roleNames; ViewBag.ExistingRoles = Roles.GetAllRoles((RoleType)user.Roles) .Select(x => x.ToString()) .ToList(); return View(user); } else { return Error(Loc.Dic.error_user_not_found); } } } else { return Error(Loc.Dic.error_no_permission); } }
public ActionResult Create(User user, string[] roleNames) { if (!ModelState.IsValid) { List <string> allRoleNames = GetRoleNames(); List <SelectListItemDB> ApprovalRoutesList = new List <SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.NoApprovalRoute } }; SelectList languagesList; using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (LanguagesRepository languagesRep = new LanguagesRepository()) { ApprovalRoutesList.AddRange( routesRep.GetList() .Select(x => new SelectListItemDB() { Id = x.Id, Name = x.Name }) ); languagesList = new SelectList(languagesRep.GetList().ToList(), "Id", "Name"); } ViewBag.RolesList = allRoleNames; ViewBag.RoutesList = new SelectList(ApprovalRoutesList, "Id", "Name"); ViewBag.LanguagesList = languagesList; return(View(user)); } if (user.DefaultApprovalRouteId == -1) { user.DefaultApprovalRouteId = null; } if (!Authorized(RoleType.SystemManager)) { return(Error(Loc.Dic.error_no_permission)); } int companyUserCount = 0; int companyUserLimit = 0; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) using (PendingUsersRepository pendingUsersRep = new PendingUsersRepository()) using (CompaniesRepository companiesRep = new CompaniesRepository()) { if (user.DefaultApprovalRouteId.HasValue) { var route = routesRep.GetEntity(user.DefaultApprovalRouteId.Value); if (route == null) { return(Error(Loc.Dic.error_invalid_form)); } } try { companyUserCount = usersRep.GetList().Where(x => x.IsActive).Count() + pendingUsersRep.GetList().Where(x => x.CompanyId == CurrentUser.CompanyId).Count(); companyUserLimit = companiesRep.GetEntity(CurrentUser.CompanyId).UsersLimit; } catch { return(Error(Loc.Dic.error_database_error)); } bool userExists = usersRep.GetList().Any(x => x.CompanyId == CurrentUser.CompanyId && x.Email == user.Email); bool pendingUserExists = pendingUsersRep.GetList().Any(x => x.CompanyId == CurrentUser.CompanyId && x.Email == user.Email); if (userExists || pendingUserExists) { return(Error(Loc.Dic.error_users_exist_error)); } } if (companyUserCount >= companyUserLimit) { return(Error(Loc.Dic.error_users_limit_reached)); } user.CompanyId = CurrentUser.CompanyId; user.CreationTime = DateTime.Now; RoleType combinedRoles = RoleType.None; List <RoleType> forbiddenRoles = GetForbiddenRoles(); if (roleNames == null || roleNames.Count() == 0) { return(Error(Loc.Dic.error_invalid_form)); } foreach (string roleName in roleNames) { RoleType role; if (!Enum.TryParse(roleName, out role) || forbiddenRoles.Contains(role)) { return(Error(Loc.Dic.error_invalid_form)); } combinedRoles = Roles.CombineRoles(combinedRoles, role); } user.Roles = (int)combinedRoles; user.DefaultApprovalRouteId = user.DefaultApprovalRouteId.HasValue && user.DefaultApprovalRouteId.Value == -1 ? null : user.DefaultApprovalRouteId; using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) { if (!usersRep.Create(user)) { return(Error(Loc.Dic.error_users_create_error)); } } return(RedirectToAction("Index")); }
public ActionResult Edit(User user, string[] roleNames) { if (Authorized(RoleType.SystemManager)) { if (user.DefaultApprovalRouteId == -1) { user.DefaultApprovalRouteId = null; } if (ModelState.IsValid) { User userFromDatabase; using (UsersRepository userRep = new UsersRepository(CurrentUser.CompanyId)) using (ApprovalRoutesRepository routesRep = new ApprovalRoutesRepository(CurrentUser.CompanyId)) { userFromDatabase = userRep.GetEntity(user.Id); if (userFromDatabase != null) { if (user.DefaultApprovalRouteId.HasValue) { var route = routesRep.GetEntity(user.DefaultApprovalRouteId.Value); if (route == null) { return(Error(Loc.Dic.error_invalid_form)); } } RoleType combinedRoles = RoleType.None; List <RoleType> forbiddenRoles = GetForbiddenRoles(); foreach (string roleName in roleNames) { RoleType role; if (Enum.TryParse(roleName, out role) && !forbiddenRoles.Contains(role)) { combinedRoles = Roles.CombineRoles(combinedRoles, role); } else { return(Error(Loc.Dic.error_invalid_form)); } } userFromDatabase.FirstName = user.FirstName; userFromDatabase.LastName = user.LastName; userFromDatabase.Email = user.Email; userFromDatabase.Roles = (int)combinedRoles; userFromDatabase.DefaultApprovalRouteId = user.DefaultApprovalRouteId.HasValue && user.DefaultApprovalRouteId.Value == -1 ? null : user.DefaultApprovalRouteId; User updatedUser = userRep.Update(userFromDatabase); if (updatedUser != null) { return(RedirectToAction("Index")); } else { return(Error(Loc.Dic.error_database_error)); } } else { return(Error(Loc.Dic.error_user_not_found)); } } } else { return(Error(ModelState)); } } else { return(Error(Loc.Dic.error_no_permission)); } }