Example #1
0
        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()));
        }
Example #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. "));
        }
Example #3
0
        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);
        }