Exemple #1
0
        /// <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()));
        }
Exemple #2
0
        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. "));
        }
Exemple #3
0
        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));
                }
            }
        }
Exemple #4
0
        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);
        }