public GETResponseMessage createNewUserAccount(string username, string password, string email, int accessLevel, UserAccountType type, int teamId) { var newUser = new USER_TABLE(); if (type == UserAccountType.Dealership && (accessLevel != (int)UserAccessTypes.DealershipAdministrator && accessLevel != (int)UserAccessTypes.DealershipUser)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed. The access level you attempted to give is not valid for a dealership. ")); } else if (type == UserAccountType.Customer && (accessLevel != (int)UserAccessTypes.CustomerAdministrator && accessLevel != (int)UserAccessTypes.CustomerUser)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed. The access level you attempted to give is not valid for a customer. ")); } else if (!checkUsernameIsUnique(username)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Username already exists. ")); } else if (!checkEmailIsUnique(email)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Email already exists. ")); } else if (username.Length < 1 || password.Length < 1 || email.Length < 1) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Invalid username, password, or email length. ")); } else { // Creating user account // GET related fields newUser.username = username; newUser.userid = username; newUser.passwd = password; newUser.email = email; newUser.language_auto = 1; // English newUser.currency_auto = 1; // AUD newUser.active = true; newUser.suspended = false; // Fields not related to GET, but that are currently required. newUser.internalemp = false; newUser.internalother = false; newUser.viewe = false; newUser.viewr = false; newUser.interpreter = false; newUser._protected = false; newUser.attach = false; newUser.print_copies = 0; newUser.sos = false; newUser.IsEquipmentEdit = false; if (type == UserAccountType.Customer) { newUser.customer_auto = teamId; } using (var context = new SharedContext()) { context.USER_TABLE.Add(newUser); try { context.SaveChanges(); } catch { return(new GETResponseMessage(ResponseTypes.Failed, "Failed: Unable to store user in database. ")); } // Creating user access mapping entry var newUserAccessMap = new UserAccessMaps(); newUserAccessMap.user_auto = newUser.user_auto; if (type == UserAccountType.Dealership) { newUserAccessMap.DealershipId = teamId; } else { newUserAccessMap.customer_auto = teamId; } newUserAccessMap.AccessLevelTypeId = accessLevel; context.UserAccessMaps.Add(newUserAccessMap); try { context.SaveChanges(); } catch { // IF this fails, user account is still created but with no access record. What should we do? // Need to ask Mason. return(new GETResponseMessage(ResponseTypes.Failed, "Failed: Unable to create access map record for the new user. ")); } } } // Insert module access records (required for old undercarriage application) var moduleAccess1 = new USER_MODULE_ACCESS() { moduleid = 0, user_auto = newUser.user_auto, }; var moduleAccess2 = new USER_MODULE_ACCESS() { moduleid = 1, user_auto = newUser.user_auto, }; var moduleAccess3 = new USER_MODULE_ACCESS() { moduleid = 3, user_auto = newUser.user_auto, }; using (var context = new SharedContext()) { context.USER_MODULE_ACCESS.Add(moduleAccess1); context.USER_MODULE_ACCESS.Add(moduleAccess2); context.USER_MODULE_ACCESS.Add(moduleAccess3); try { context.SaveChanges(); } catch { return(new GETResponseMessage(ResponseTypes.Failed, "Failed: User was created, but there was an error giving them module access. ")); } } return(new GETResponseMessage(ResponseTypes.Success, newUser.user_auto.ToString())); }
public GETResponseMessage updateUserCustomerAccess(long userId, UserCustomerAccessDataSet[] customers) { using (var context = new SharedContext()) { var customersUserHasAccessTo = context.UserAccessMaps.Where(m => m.customer_auto != null && m.user_auto == userId).ToList(); foreach (UserCustomerAccessDataSet customer in customers) { if (customer.hasAccess) { if (!context.UserAccessMaps.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId).Any()) { var customerAccessRecord = new UserAccessMaps() { AccessLevelTypeId = 3, customer_auto = customer.customerId, user_auto = userId }; context.UserAccessMaps.Add(customerAccessRecord); } if (!context.USER_CRSF_CUST_EQUIP.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId && m.level_type == 1).Any()) { var customerAccessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = userId, customer_auto = customer.customerId, level_type = 1, modified_user = "******" }; context.USER_CRSF_CUST_EQUIP.Add(customerAccessRecord); } } else { if (context.UserAccessMaps.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId).Any()) { var record = context.UserAccessMaps.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId).First(); context.UserAccessMaps.Remove(record); } if (context.USER_CRSF_CUST_EQUIP.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId && m.level_type == 1).Any()) { var record = context.USER_CRSF_CUST_EQUIP.Where(m => m.user_auto == userId && m.customer_auto == customer.customerId && m.level_type == 1).First(); context.USER_CRSF_CUST_EQUIP.Remove(record); } } } try { context.SaveChanges(); } catch (Exception e) { return(new GETResponseMessage(ResponseTypes.Failed, "Failed to update users customer access. " + e.Message + e.InnerException)); } } return(new GETResponseMessage(ResponseTypes.Success, "Users customer access updated successfully. ")); }
private bool updateUserAccessMaps(UserModel user) { var existingMaps = _context.UserAccessMaps.Where(m => m.user_auto == user.Id).ToList(); _context.UserAccessMaps.RemoveRange(existingMaps); UserAccessMaps registerUserAccess = new UserAccessMaps() { user_auto = user.Id, AccessLevelTypeId = user.AccessTypeId, DealershipId = user.DealershipId, customer_auto = user.CustomerId, crsf_auto = null, equipmentid_auto = null }; _context.UserAccessMaps.Add(registerUserAccess); // Add access maps for multiple customers if user is a dealership user, and has been given access to specific customers if (user.AccessTypeId == (int)UserAccessTypes.DealershipUser) { foreach (var custId in user.AccessCustomerIds) { UserAccessMaps customerAccess = new UserAccessMaps() { user_auto = user.Id, AccessLevelTypeId = user.AccessTypeId, DealershipId = null, customer_auto = custId, crsf_auto = null, equipmentid_auto = null }; _context.UserAccessMaps.Add(customerAccess); } } try { _context.SaveChanges(); } catch { return(false); } foreach (var support in _context.SUPPORT_TEAM) { new BLLDomain.UserAccessDomain.SupportTeamAccess(new SharedContext(), user.Id.LongNullableToInt()).RemoveUserFromSupportTeam(support.Id, user.Id.LongNullableToInt()); } foreach (var group in _context.DEALER_GROUP) { new BLLDomain.UserAccessDomain.DealerGroupAccess(new SharedContext(), user.Id.LongNullableToInt()).RemoveUserFromDealerGroup(group.Id, user.Id.LongNullableToInt()); } foreach (var dealer in _context.Dealerships) { new BLLDomain.UserAccessDomain.DealerAccess(new SharedContext(), user.Id.LongNullableToInt()).RemoveUserFromDealer(dealer.DealershipId, user.Id.LongNullableToInt()); } foreach (var customer in _context.CUSTOMER) { new BLLDomain.UserAccessDomain.CustomerAccess(new SharedContext(), user.Id.LongNullableToInt()).RemoveUserFromCustomer(customer.customer_auto.LongNullableToInt(), user.Id.LongNullableToInt()); } foreach (var jobsite in _context.CRSF) { new BLLDomain.UserAccessDomain.JobsiteAccess(new SharedContext(), user.Id.LongNullableToInt()).RemoveUserFromJobsite(jobsite.crsf_auto.LongNullableToInt(), user.Id.LongNullableToInt()); } switch ((BLLGetCore.Classes.UserAccessTypes)user.AccessTypeId) { case BLLGetCore.Classes.UserAccessTypes.GlobalAdministrator: new BLLDomain.UserAccessDomain.SupportTeamAccess(new SharedContext(), user.Id.LongNullableToInt()).AddUserToSupportTeam(1, user.Id.LongNullableToInt()); break; case BLLGetCore.Classes.UserAccessTypes.DealershipAdministrator: new BLLDomain.UserAccessDomain.DealerGroupAccess(new SharedContext(), user.Id.LongNullableToInt()).AddUserToDealerGroup(1, user.Id.LongNullableToInt()); break; case BLLGetCore.Classes.UserAccessTypes.DealershipUser: new BLLDomain.UserAccessDomain.DealerAccess(new SharedContext(), user.Id.LongNullableToInt()).AddUserToDealer(user.DealershipId.Value, user.Id.LongNullableToInt()); break; case BLLGetCore.Classes.UserAccessTypes.CustomerAdministrator: new BLLDomain.UserAccessDomain.CustomerAccess(new SharedContext(), user.Id.LongNullableToInt()).AddUserToCustomer(user.CustomerId.LongNullableToInt(), user.Id.LongNullableToInt()); break; case BLLGetCore.Classes.UserAccessTypes.CustomerUser: new BLLDomain.UserAccessDomain.JobsiteAccess(new SharedContext(), user.Id.LongNullableToInt()).AddUserToJobsite(user.JobsiteId.LongNullableToInt(), user.Id.LongNullableToInt()); break; } return(true); }