/// <summary> /// Creates a new customer given a customerData object which contains all relevent details about that customer. /// Returns a ResponseMessage object which contains the success status, and the id of the new customer if successful. /// </summary> /// <param name="customerData"></param> /// <returns></returns> public GETResponseMessage createNewCustomer(CreateNewCustomerDataSet customerData) { if (!checkCustomerNameIsUnique(customerData.customerName)) { return(new GETResponseMessage(ResponseTypes.Failed, "Customer name is not unique. ")); } if (!doesDealershipExist(customerData.dealershipId)) { return(new GETResponseMessage(ResponseTypes.Failed, "Dealership ID not found. ")); } if (customerData.customerName == "") { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Missing required data. ")); } string[] LogoArr = customerData.logoBase64.Split(','); string customerLogo = ""; if (LogoArr.Length > 1) { customerLogo = LogoArr[1]; } int?reportId = null; if (customerData.reportId != 0) { reportId = customerData.reportId; } CUSTOMER newCustomer = new CUSTOMER() { cust_name = customerData.customerName, custid = customerData.customerName, active = true, billing_address = false, Showlimits = false, DealershipId = customerData.dealershipId, cust_street = customerData.streetNumber + " " + customerData.streetAddress, cust_suburb = customerData.city, cust_postcode = customerData.postCode, cust_state = customerData.state, cust_phone = customerData.phoneNumber, cust_country = customerData.country, cust_mobile = customerData.mobileNumber, cust_email = customerData.emailAddress, created_date = DateTime.UtcNow, CreatedByUserId = customerData.authUserId, fullAddress = customerData.fullAddress, labonly = false, logo = Convert.FromBase64String(customerLogo), SelectedReportId = reportId }; using (var context = new SharedContext()) { context.CUSTOMER.Add(newCustomer); try { context.SaveChanges(); } catch (Exception e) { return(new GETResponseMessage(ResponseTypes.Failed, e.Message)); } } using (var context = new SharedContext()) { long[] userIds = context.UserAccessMaps.Where(a => (a.DealershipId == customerData.dealershipId && a.AccessLevelTypeId == (int)UserAccessTypes.DealershipAdministrator) || a.AccessLevelTypeId == (int)UserAccessTypes.GlobalAdministrator) .Where(m => m.user_auto != null).Select(u => (long)u.user_auto).ToArray(); foreach (long userId in userIds) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = userId, customer_auto = newCustomer.customer_auto, level_type = 1, modified_user = "******" }; context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } try { context.SaveChanges(); } catch (Exception e) { return(new GETResponseMessage(ResponseTypes.Failed, e.Message)); } } return(new GETResponseMessage(ResponseTypes.Success, newCustomer.customer_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. ")); }
public GETResponseMessage updateExistingUserAccount(long userId, string username, string email, int accessLevel) { UserTeam usersTeam = AuthorizeUserAccess.getUserTeam(userId); using (var context = new SharedContext()) { var userAccount = context.USER_TABLE.Find(userId); if (userAccount == null || username == "" || email == "") { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Invalid user details. ")); } var aspUserAccount = context.AspNetUsers.Find(userAccount.AspNetUserId); if (aspUserAccount == null) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Internal error occurred!. AspUser not found!")); } if (email != userAccount.email) { if (!checkEmailIsUnique(email) || !checkAspEmailIsUnique(email)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Email address must be unique. ")); } } if (username != userAccount.username) { if (!checkUsernameIsUnique(username) || !checkAspUsernameIsUnique(username)) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Username must be unique. ")); } } // Ensure that user is updating the access level correctly. // (A user who is part of a dealership must have a dealership access level). bool accessLevelAllowed = false; if (usersTeam.teamType == UserAccountType.Dealership && (accessLevel == (int)UserAccessTypes.DealershipAdministrator || accessLevel == (int)UserAccessTypes.DealershipUser)) { accessLevelAllowed = true; } else if (usersTeam.teamType == UserAccountType.Customer && (accessLevel == (int)UserAccessTypes.CustomerAdministrator || accessLevel == (int)UserAccessTypes.CustomerUser)) { accessLevelAllowed = true; } else if (accessLevel == 0) // Level 0 means don't change the access level. { accessLevelAllowed = true; } if (!accessLevelAllowed) { return(new GETResponseMessage(ResponseTypes.InvalidInputs, "You are not allowed to give this user account this access level. ")); } userAccount.username = username; userAccount.userid = username; userAccount.email = email; aspUserAccount.UserName = username; aspUserAccount.Email = email; UserAccessMaps userMap; if (usersTeam.teamType == UserAccountType.Dealership) { userMap = context.UserAccessMaps.FirstOrDefault(m => m.user_auto == userId && m.DealershipId == usersTeam.teamId); } else { userMap = context.UserAccessMaps.FirstOrDefault(m => m.user_auto == userId && m.customer_auto == usersTeam.teamId); } if (userMap == null) { return(new GETResponseMessage(ResponseTypes.Failed, "Failed to update the users access level record. Couldn't find it in the database. ")); } // If access level passed in is 0, we wont change their access. if (accessLevel != 0) { // If the user is getting changed to a dealership user, and wasn't already // we need to remove their access to all customers if (accessLevel == (int)UserAccessTypes.DealershipUser && userMap.AccessLevelTypeId != (int)UserAccessTypes.DealershipUser) { var list = context.USER_CRSF_CUST_EQUIP.Where(u => u.user_auto == userId).ToList(); context.USER_CRSF_CUST_EQUIP.RemoveRange(list); var list2 = context.UserAccessMaps.Where(m => m.user_auto == userId && m.customer_auto != null).ToList(); context.UserAccessMaps.RemoveRange(list2); } else if (accessLevel == (int)UserAccessTypes.DealershipAdministrator && userMap.AccessLevelTypeId != (int)UserAccessTypes.DealershipAdministrator) { long[] customerIds = context.CUSTOMER.Where(c => c.DealershipId == usersTeam.teamId).Select(c => c.customer_auto).ToArray(); foreach (long customerId in customerIds) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = userId, customer_auto = customerId, level_type = 1, modified_user = "******" }; context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } } userMap.AccessLevelTypeId = accessLevel; } try { context.SaveChanges(); return(new GETResponseMessage(ResponseTypes.Success, "User account updated successfully. ")); } catch (Exception e) { return(new GETResponseMessage(ResponseTypes.Failed, "Failed to save. " + e.Message)); } } }
private bool updateAccessRecordsOldUCUIForNewUser(UserModel user) { var existingRecords = _context.USER_CRSF_CUST_EQUIP.Where(c => c.user_auto == user.Id).ToList(); _context.USER_CRSF_CUST_EQUIP.RemoveRange(existingRecords); if (user.AccessTypeId == (int)UserAccessTypes.GlobalAdministrator) { List <long> customerIds = _context.CUSTOMER.Select(c => c.customer_auto).ToList(); foreach (long customerId in customerIds) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = user.Id, customer_auto = customerId, level_type = 1, modified_user = "******" }; _context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } } // Dealership admin else if (user.AccessTypeId == (int)UserAccessTypes.DealershipAdministrator) { long[] customerIds = _context.CUSTOMER.Where(c => c.DealershipId == user.DealershipId).Select(c => c.customer_auto).ToArray(); foreach (long customerId in customerIds) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = user.Id, customer_auto = customerId, level_type = 1, modified_user = "******" }; _context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } } else if (user.AccessTypeId == (int)UserAccessTypes.DealershipUser) // Dealership user { foreach (var customer in user.AccessCustomerIds) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = user.Id, customer_auto = customer, level_type = 1, modified_user = "******" }; _context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } } // Customer admin or customer user else if (user.AccessTypeId == (int)UserAccessTypes.CustomerAdministrator || user.AccessTypeId == (int)UserAccessTypes.CustomerUser) { USER_CRSF_CUST_EQUIP accessRecord = new USER_CRSF_CUST_EQUIP() { user_auto = user.Id, customer_auto = (long)user.CustomerId, level_type = 1, modified_user = "******" }; _context.USER_CRSF_CUST_EQUIP.Add(accessRecord); } 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); }