public static string DeleteTask(int TaskId, string DefaultConnection, string strCurrentUser)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var objTask = context.AdefHelpDeskTasks.SingleOrDefault(x => x.TaskId == TaskId);

                #region Validate
                if (objTask == null)
                {
                    return("Task Not found");
                }

                if (context.AdefHelpDeskTaskDetails.FirstOrDefault(x => x.TaskId == objTask.TaskId) != null)
                {
                    return("Must delete all Comments and Work items first.");
                }
                #endregion

                // Delete associated records
                var colTaskAssociations = from TaskAssociations in context.AdefHelpDeskTaskAssociations
                                          where TaskAssociations.TaskId == objTask.TaskId
                                          select TaskAssociations;

                context.AdefHelpDeskTaskAssociations.RemoveRange(colTaskAssociations);

                var colTaskCategories = from TaskCategories in context.AdefHelpDeskTaskCategories
                                        where TaskCategories.TaskId == objTask.TaskId
                                        select TaskCategories;

                context.AdefHelpDeskTaskCategories.RemoveRange(colTaskCategories);

                var colAdefHelpDeskLog = from AdefHelpDeskLog in context.AdefHelpDeskLog
                                         where AdefHelpDeskLog.TaskId == objTask.TaskId
                                         select AdefHelpDeskLog;

                context.AdefHelpDeskLog.RemoveRange(colAdefHelpDeskLog);
                context.SaveChanges();

                // Log it
                Log.InsertSystemLog(DefaultConnection,
                                    Constants.TaskDetailDeletion,
                                    strCurrentUser,
                                    $"({strCurrentUser}) Deleted Task # {objTask.TaskId} ({objTask.Description})");

                // Delete Task
                context.AdefHelpDeskTasks.Remove(objTask);
                context.SaveChanges();
            }

            return("");
        }
Ejemplo n.º 2
0
        public static string DeleteUser(int id, UserManager <ApplicationUser> _userManager, string ConnectionString, string strCurrentUser)
        {
            try
            {
                var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                optionsBuilder.UseSqlServer(ConnectionString);

                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    // Get User
                    var objDTOUser = (from objuser in context.AdefHelpDeskUsers
                                      .Include(role => role.AdefHelpDeskUserRoles)
                                      where objuser.UserId == id
                                      select objuser).FirstOrDefault();

                    if (objDTOUser == null)
                    {
                        return("NotFound");
                    }

                    // Cannot delete yourself
                    if (objDTOUser.Username == strCurrentUser)
                    {
                        return("You cannot delete your own account");
                    }

                    // Get user in UserManager
                    var objUser = _userManager.FindByNameAsync(objDTOUser.Username).Result;

                    // Delete all roles
                    foreach (var itemRole in objDTOUser.AdefHelpDeskUserRoles)
                    {
                        var objUserRole = context.AdefHelpDeskUserRoles.SingleOrDefaultAsync(x => x.UserRoleId == itemRole.UserRoleId).Result;
                        context.AdefHelpDeskUserRoles.Remove(objUserRole);
                    }

                    context.SaveChanges();

                    // Delete User in AdefHelpDeskUsers
                    context.AdefHelpDeskUsers.Remove(objDTOUser);
                    context.SaveChanges();

                    // Delete the User in UserManager
                    _userManager.DeleteAsync(objUser);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return("");
        }
Ejemplo n.º 3
0
        public void UpdateAzureStorageConnection(string DefaultConnection, string AzureStorageConnection)
        {
            // Ensure there is a AdefHelpDesk Container
            // Retrieve the connection string for use with the application.
            string storageConnectionString = AzureStorageConnection;

            // Check whether the connection string can be parsed.
            CloudStorageAccount storageAccount     = null;
            CloudBlobContainer  cloudBlobContainer = null;

            if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
            {
                CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
                cloudBlobContainer = cloudBlobClient.GetContainerReference("adefhelpdesk-files");
                cloudBlobContainer.CreateIfNotExistsAsync().Wait();
            }
            else
            {
                throw new Exception("Cannot create Azure Storage folder using this connection!");
            }

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var resuts = from Settings in context.AdefHelpDeskSettings
                             where Settings.SettingName == "AzureStorageConnection"
                             select Settings;

                resuts.FirstOrDefault().SettingValue = Convert.ToString(AzureStorageConnection);
                context.SaveChanges();
            }
        }
        public static DTOStatus DeleteRole(int id, string ConnectionString)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                try
                {
                    var objRole = context.AdefHelpDeskRoles.SingleOrDefaultAsync(x => x.Id == id).Result;

                    if (objRole == null)
                    {
                        objDTOStatus.StatusMessage = $"id #{id} Not Found";
                        objDTOStatus.Success       = false;
                    }

                    context.AdefHelpDeskRoles.Remove(objRole);
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                }
            }

            return(objDTOStatus);
        }
        public static CategoryNode CreateCategory(CategoryNode categoryNode, string ConnectionString)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var newCategoryNode = new AdefHelpDeskCategories();

                newCategoryNode.CategoryName = categoryNode.NodeName;

                if (categoryNode.ParentId > 0)
                {
                    newCategoryNode.ParentCategoryId = categoryNode.ParentId;
                }
                else
                {
                    newCategoryNode.ParentCategoryId = null;
                }

                newCategoryNode.Selectable       = categoryNode.Selectable;
                newCategoryNode.RequestorVisible = categoryNode.RequestorVisible;

                context.AdefHelpDeskCategories.Add(newCategoryNode);
                context.SaveChanges();

                categoryNode.Id = newCategoryNode.CategoryId;
            }

            return(categoryNode);
        }
        public IActionResult Index([FromBody] DTOVerification Verification)
        {
            // LoginStatus to return
            LoginStatus objLoginStatus = new LoginStatus();

            if ((Verification.userName != null) && (Verification.password != null) && (Verification.verificationCode != null))
            {
                // Get values passed
                var paramUserName         = Verification.userName.Trim();
                var paramPassword         = Verification.password.Trim();
                var paramVerificationCode = Verification.verificationCode;

                var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                optionsBuilder.UseSqlServer(GetConnectionString());

                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    // Test the Verification Code
                    var objAdefHelpDeskUser = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                               where AdefHelpDeskUsers.Username == paramUserName
                                               where AdefHelpDeskUsers.VerificationCode == paramVerificationCode
                                               select AdefHelpDeskUsers).FirstOrDefault();

                    if (objAdefHelpDeskUser == null)
                    {
                        // Bad verification code
                        objLoginStatus.isLoggedIn = false;
                        objLoginStatus.status     = "Incorrrect Verification Code.";
                        return(Ok(objLoginStatus));
                    }

                    // Sign the User in
                    var SignInResult = _signInManager.PasswordSignInAsync(
                        paramUserName, paramPassword, false, lockoutOnFailure: false).Result;

                    if (!SignInResult.Succeeded)
                    {
                        // Return the error
                        objLoginStatus.status     = $"Could not sign user {paramUserName} in.";
                        objLoginStatus.isLoggedIn = false;
                        return(Ok(objLoginStatus));
                    }
                    else
                    {
                        // Clear the verification code
                        objAdefHelpDeskUser.VerificationCode = null;
                        context.SaveChanges();

                        // Return Success
                        objLoginStatus.status     = $"User {paramUserName} signed in.";
                        objLoginStatus.isLoggedIn = true;
                        return(Ok(objLoginStatus));
                    }
                }
            }

            objLoginStatus.isLoggedIn = false;
            objLoginStatus.status     = "Authentication Failure";
            return(Ok(objLoginStatus));
        }
        private DTOStatus ResetVersionTable()
        {
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success       = true;
            objDTOStatus.StatusMessage = "";

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(GetConnectionString());

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                try
                {
                    // Get all version records
                    var versions = (from version in context.AdefHelpDeskVersion
                                    select version).ToList();

                    // Delete them
                    foreach (var version in versions)
                    {
                        context.AdefHelpDeskVersion.Remove(version);
                        context.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                }
            }

            return(objDTOStatus);
        }
        public static string DeleteTaskDetail(int TaskDetailId, string DefaultConnection, string strCurrentUser)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var objTaskDetail = context.AdefHelpDeskTaskDetails.SingleOrDefault(x => x.DetailId == TaskDetailId);
                if (objTaskDetail == null)
                {
                    return("Task Detail Not Found");
                }

                // Get the Attachments of the current item
                var colAttachments = from Attachment in context.AdefHelpDeskAttachments
                                     where Attachment.DetailId == objTaskDetail.DetailId
                                     select Attachment;

                // Loop thru each Attachment
                foreach (var objAttachment in colAttachments)
                {
                    // Delete the file
                    DeleteExistingFile(objAttachment, DefaultConnection, strCurrentUser);
                }

                context.AdefHelpDeskAttachments.RemoveRange(colAttachments);
                context.SaveChanges();

                // Log it
                Log.InsertSystemLog(DefaultConnection,
                                    Constants.TaskDetailDeletion,
                                    strCurrentUser,
                                    $"({strCurrentUser}) Deleted TaskDetail # {objTaskDetail.DetailId} ({objTaskDetail.Description}) of Task # {objTaskDetail.TaskId}.");

                // Delete TaskDetail
                context.AdefHelpDeskTaskDetails.Remove(objTaskDetail);
                context.SaveChanges();
            }

            return("");
        }
        // Methods

        #region public static DTOStatus UpdateCategory(int id, CategoryNode categoryNode, string ConnectionString)
        public static DTOStatus UpdateCategory(int id, CategoryNode categoryNode, string ConnectionString)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var existingCategoryNode = context.AdefHelpDeskCategories.SingleOrDefault(x => x.CategoryId == id);
                if (existingCategoryNode == null)
                {
                    objDTOStatus.StatusMessage = $"id #{id} Not Found";
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }

                // Update the Node
                existingCategoryNode.CategoryName = categoryNode.NodeName;
                if (categoryNode.ParentId > 0)
                {
                    existingCategoryNode.ParentCategoryId = categoryNode.ParentId;
                }
                else
                {
                    existingCategoryNode.ParentCategoryId = null;
                }

                existingCategoryNode.Selectable       = categoryNode.Selectable;
                existingCategoryNode.RequestorVisible = categoryNode.RequestorVisible;

                context.Entry(existingCategoryNode).State = EntityState.Modified;

                try
                {
                    context.SaveChanges();
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }
            }

            return(objDTOStatus);
        }
Ejemplo n.º 10
0
        public void UpdateApplicationGUID(string DefaultConnection, string ApplicationGUID)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var resuts = from Settings in context.AdefHelpDeskSettings
                             where Settings.SettingName == "ApplicationGUID"
                             select Settings;

                resuts.FirstOrDefault().SettingValue = Convert.ToString(ApplicationGUID);
                context.SaveChanges();
            }
        }
Ejemplo n.º 11
0
        public static void InsertSystemLog(string DefaultConnection, string LogType, string UserName, string LogMessage)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                AdefHelpDeskSystemLog objAdefHelpDeskSystemLog = new AdefHelpDeskSystemLog();
                objAdefHelpDeskSystemLog.CreatedDate = DateTime.Now;
                objAdefHelpDeskSystemLog.LogMessage  = Extensions.Left(LogMessage, 4000);
                objAdefHelpDeskSystemLog.LogType     = LogType;
                objAdefHelpDeskSystemLog.UserName    = UserName;

                context.AdefHelpDeskSystemLog.Add(objAdefHelpDeskSystemLog);
                context.SaveChanges();
            }
        }
Ejemplo n.º 12
0
        public static void InsertLog(string DefaultConnection, int TaskID, int UserID, string LogDescription)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                AdefHelpDeskLog objAdefHelpDeskLog = new AdefHelpDeskLog();
                objAdefHelpDeskLog.DateCreated    = DateTime.Now;
                objAdefHelpDeskLog.LogDescription = Extensions.Left(LogDescription, 499);
                objAdefHelpDeskLog.TaskId         = TaskID;
                objAdefHelpDeskLog.UserId         = UserID;

                context.AdefHelpDeskLog.Add(objAdefHelpDeskLog);
                context.SaveChanges();
            }
        }
        private DTOStatus MakeUserASuperUser(string UserName)
        {
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success       = true;
            objDTOStatus.StatusMessage = "";

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(GetConnectionString());

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                try
                {
                    // Get the user
                    var objUser = (from user in context.AdefHelpDeskUsers
                                   where user.Username == UserName
                                   select user).FirstOrDefault();

                    if (objUser != null)
                    {
                        // Update them
                        objUser.IsSuperUser = true;
                        context.SaveChanges();
                    }
                    else
                    {
                        objDTOStatus.Success       = false;
                        objDTOStatus.StatusMessage = $"Cound not find {UserName} in database";
                    }
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                }
            }

            return(objDTOStatus);
        }
        public static RoleDTO CreateRole(RoleDTO RoleDTO, string ConnectionString)
        {
            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var newRoleDTO = new AdefHelpDeskRoles();

                newRoleDTO.RoleName = RoleDTO.roleName;
                newRoleDTO.PortalId = -1;

                context.AdefHelpDeskRoles.Add(newRoleDTO);
                context.SaveChanges();

                RoleDTO.iD = newRoleDTO.Id;
            }

            return(RoleDTO);
        }
        public static DTOStatus UpdateRole(int id, RoleDTO RoleDTO, string ConnectionString)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var existingRole = context.AdefHelpDeskRoles.SingleOrDefaultAsync(x => x.Id == id).Result;
                if (existingRole == null)
                {
                    objDTOStatus.StatusMessage = $"id #{id} Not Found";
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }

                // Update the Role
                existingRole.RoleName             = RoleDTO.roleName;
                context.Entry(existingRole).State = EntityState.Modified;

                try
                {
                    context.SaveChanges();
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                }
            }

            return(objDTOStatus);
        }
Ejemplo n.º 16
0
        public static DTOStatus CreateUserMethod(DTOUser DTOUser, IHostingEnvironment _hostEnvironment, UserManager <ApplicationUser> _userManager, SignInManager <ApplicationUser> _signInManager, string ConnectionString, string CurrentHostLocation, string strCurrentUser)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.StatusMessage = "Failure";
            objDTOStatus.Success       = false;

            try
            {
                RegisterDTO objRegisterDTO = new RegisterDTO();

                objRegisterDTO.userName  = DTOUser.userName;
                objRegisterDTO.email     = DTOUser.email;
                objRegisterDTO.firstName = DTOUser.firstName;
                objRegisterDTO.lastName  = DTOUser.lastName;
                objRegisterDTO.password  = DTOUser.password;

                var objRegisterStatus = RegisterController.RegisterUser(objRegisterDTO,
                                                                        ConnectionString, _hostEnvironment, _userManager, _signInManager, CurrentHostLocation, true, false);

                if (!objRegisterStatus.isSuccessful)
                {
                    // Registration was not successful
                    objDTOStatus.StatusMessage = objRegisterStatus.status;
                    return(objDTOStatus);
                }

                var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                optionsBuilder.UseSqlServer(ConnectionString);

                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    // Get User
                    var objDTOUser = (from objuser in context.AdefHelpDeskUsers
                                      where objuser.Username == DTOUser.userName
                                      select objuser).FirstOrDefault();

                    if (objDTOUser != null)
                    {
                        // Update remaining fields
                        objDTOUser.IsSuperUser = DTOUser.isSuperUser;
                    }

                    // Add the Roles for the user
                    int UserId = objDTOUser.UserId;
                    foreach (var itemRole in DTOUser.userRoles)
                    {
                        AdefHelpDeskUserRoles objRoleDTO = new AdefHelpDeskUserRoles();

                        objRoleDTO.RoleId = itemRole.iD;
                        objRoleDTO.UserId = UserId;

                        context.AdefHelpDeskUserRoles.Add(objRoleDTO);
                    }

                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                objDTOStatus.Success       = false;
                return(objDTOStatus);
            }

            objDTOStatus.StatusMessage = "";
            objDTOStatus.Success       = true;
            return(objDTOStatus);
        }
Ejemplo n.º 17
0
        public static DTOStatus UpdateUser(int id, DTOUser DTOUser, UserManager <ApplicationUser> _userManager, string ConnectionString, string strCurrentUser)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.StatusMessage = "Failure";
            objDTOStatus.Success       = false;

            #region Validation ****************************
            EmailValidation objEmailValidation = new EmailValidation();
            if (!objEmailValidation.IsValidEmail(DTOUser.email))
            {
                objDTOStatus.StatusMessage = "This Email is not valid.";
                objDTOStatus.Success       = false;
                return(objDTOStatus);
            }

            if ((DTOUser.firstName == null) || (DTOUser.firstName.Length < 1))
            {
                objDTOStatus.StatusMessage = "This First Name is not long enough.";
                objDTOStatus.Success       = false;
                return(objDTOStatus);
            }

            if ((DTOUser.lastName == null) || (DTOUser.lastName.Length < 1))
            {
                objDTOStatus.StatusMessage = "This Last Name is not long enough.";
                objDTOStatus.Success       = false;
                return(objDTOStatus);
            }
            #endregion

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                // Get User
                var objDTOUser = (from objuser in context.AdefHelpDeskUsers
                                  .Include(role => role.AdefHelpDeskUserRoles)
                                  where objuser.UserId == id
                                  select objuser).FirstOrDefault();

                if (objDTOUser == null)
                {
                    objDTOStatus.StatusMessage = "Not Found";
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }

                // Check the Email
                var objAdefHelpDeskEmail = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                            where AdefHelpDeskUsers.Email.ToLower() == DTOUser.email.ToLower()
                                            where AdefHelpDeskUsers.Username != DTOUser.userName
                                            select AdefHelpDeskUsers).FirstOrDefault();

                if (objAdefHelpDeskEmail != null)
                {
                    // User is already taken
                    objDTOStatus.StatusMessage = "This Email address is already taken.";
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }

                try
                {
                    // Update the user
                    objDTOUser.FirstName        = DTOUser.firstName;
                    objDTOUser.LastName         = DTOUser.lastName;
                    objDTOUser.Email            = DTOUser.email;
                    objDTOUser.VerificationCode = null; // Admin updating user always clears verification code

                    // Cannot change your own IsSuperUser status
                    if (objDTOUser.Username != strCurrentUser)
                    {
                        objDTOUser.IsSuperUser = DTOUser.isSuperUser;
                    }

                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    return(objDTOStatus);
                }

                // Delete all roles -- so we can add the new ones
                foreach (var itemRole in objDTOUser.AdefHelpDeskUserRoles)
                {
                    var objUserRole = context.AdefHelpDeskUserRoles.SingleOrDefault(x => x.UserRoleId == itemRole.UserRoleId);
                    context.AdefHelpDeskUserRoles.Remove(objUserRole);
                }

                context.SaveChanges();

                // Add the Roles for the user
                foreach (var itemRole in DTOUser.userRoles)
                {
                    AdefHelpDeskUserRoles objRoleDTO = new AdefHelpDeskUserRoles();

                    objRoleDTO.RoleId = itemRole.iD;
                    objRoleDTO.UserId = DTOUser.userId;

                    context.AdefHelpDeskUserRoles.Add(objRoleDTO);
                }

                context.SaveChanges();
            }

            #region Migrate User (if needed)
            // Get user in UserManager
            var user = _userManager.FindByNameAsync(DTOUser.userName).Result;
            if (user == null)
            {
                // The user is in the old memebership API
                // Migrate them

                if ((DTOUser.password != null) && (DTOUser.password.Trim().Length < 1))
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = "Account must be migrated to the new membership system -- Must supply a new password";
                    return(objDTOStatus);
                }

                RegisterDTO objRegisterDTO = new RegisterDTO();

                objRegisterDTO.email     = DTOUser.email;
                objRegisterDTO.firstName = DTOUser.firstName;
                objRegisterDTO.lastName  = DTOUser.lastName;
                objRegisterDTO.password  = DTOUser.password;
                objRegisterDTO.userName  = DTOUser.userName;

                try
                {
                    // Membership API

                    user = new ApplicationUser {
                        UserName = DTOUser.userName, Email = DTOUser.email
                    };
                    var RegisterStatus = _userManager.CreateAsync(user, DTOUser.password).Result;

                    if (!RegisterStatus.Succeeded)
                    {
                        // Registration was not successful
                        if (RegisterStatus.Errors.FirstOrDefault() != null)
                        {
                            objDTOStatus.StatusMessage = RegisterStatus.Errors.FirstOrDefault().Description;
                        }
                        else
                        {
                            objDTOStatus.StatusMessage = "Registration error";
                        }

                        objDTOStatus.Success = false;
                        return(objDTOStatus);
                    }
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.Message;
                    return(objDTOStatus);
                }
            }
            #endregion

            // Update Email
            var result = _userManager.SetEmailAsync(user, DTOUser.email).Result;

            // Only update password if it is passed
            if ((DTOUser.password != null) && (DTOUser.password.Trim().Length > 1))
            {
                try
                {
                    var resetToken     = _userManager.GeneratePasswordResetTokenAsync(user).Result;
                    var passwordResult = _userManager.ResetPasswordAsync(user, resetToken, DTOUser.password).Result;

                    if (!passwordResult.Succeeded)
                    {
                        if (passwordResult.Errors.FirstOrDefault() != null)
                        {
                            objDTOStatus.StatusMessage = passwordResult.Errors.FirstOrDefault().Description;
                        }
                        else
                        {
                            objDTOStatus.StatusMessage = "Pasword error";
                        }

                        objDTOStatus.Success = false;
                        return(objDTOStatus);
                    }
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.Message;
                    return(objDTOStatus);
                }
            }

            objDTOStatus.StatusMessage = "";
            objDTOStatus.Success       = true;

            return(objDTOStatus);
        }
        public IActionResult Index([FromBody] DTOMigration Migration)
        {
            // LoginStatus to return
            LoginStatus objLoginStatus = new LoginStatus();

            objLoginStatus.isLoggedIn = false;

            if ((Migration.userName != null) && (Migration.password != null) && (Migration.passwordNew != null))
            {
                // Get values passed
                var paramUserName    = Migration.userName;
                var paramPassword    = ComputeHash.GetSwcMD5(paramUserName.Trim().ToLower() + Migration.password.Trim());
                var paramPasswordNew = Migration.passwordNew;

                var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                optionsBuilder.UseSqlServer(GetConnectionString());

                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    // Must be in legacy User table
                    var objAdefHelpDeskUser = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                               where AdefHelpDeskUsers.Username == paramUserName
                                               where AdefHelpDeskUsers.Password == paramPassword
                                               select AdefHelpDeskUsers).FirstOrDefault();

                    if (objAdefHelpDeskUser != null)
                    {
                        // Email Validation ****************************

                        if (objAdefHelpDeskUser.Email == null)
                        {
                            objLoginStatus.status     = "The Email for this account is not valid. It cannot be migrated.";
                            objLoginStatus.isLoggedIn = false;
                            return(Ok(objLoginStatus));
                        }

                        EmailValidation objEmailValidation = new EmailValidation();
                        if (!objEmailValidation.IsValidEmail(objAdefHelpDeskUser.Email))
                        {
                            objLoginStatus.status     = "The Email for this account is not valid. It cannot be migrated.";
                            objLoginStatus.isLoggedIn = false;
                            return(Ok(objLoginStatus));
                        }

                        // Migrate Account

                        var user = new ApplicationUser {
                            UserName = paramUserName, Email = objAdefHelpDeskUser.Email
                        };
                        var result = _userManager.CreateAsync(user, paramPasswordNew).Result;

                        if (result.Succeeded)
                        {
                            // Sign the User in
                            var SignInResult = _signInManager.PasswordSignInAsync(
                                paramUserName, paramPasswordNew, false, lockoutOnFailure: false).Result;

                            if (!SignInResult.Succeeded)
                            {
                                // Return the error
                                objLoginStatus.status     = $"Could not sign user {paramUserName} in.";
                                objLoginStatus.isLoggedIn = false;
                                return(Ok(objLoginStatus));
                            }
                            else
                            {
                                try
                                {
                                    // Everything worked
                                    // Update the users password in the legacy table
                                    objAdefHelpDeskUser.Password = ComputeHash.GetSwcMD5(paramUserName.Trim().ToLower() + paramPasswordNew.Trim());
                                    context.SaveChanges();
                                }
                                catch
                                {
                                    // Do nothing if this does not work
                                    // This password is only needed if connecting from the older
                                    // Non Angular version of ADefHelpDesk
                                }

                                // Success
                                objLoginStatus.status     = $"Logged {paramUserName} in.";
                                objLoginStatus.isLoggedIn = true;
                                return(Ok(objLoginStatus));
                            }
                        }
                        else
                        {
                            // Return the errors from the Memberhip API Creation
                            string strErrors = "";
                            foreach (var Error in result.Errors)
                            {
                                strErrors = strErrors + "\n" + Error.Description;
                            }

                            // Return the error
                            objLoginStatus.status     = strErrors;
                            objLoginStatus.isLoggedIn = false;
                            return(Ok(objLoginStatus));
                        }
                    }
                    else
                    {
                        objLoginStatus.status = "Orginal password does not match.";
                        return(Ok(objLoginStatus));
                    }
                }
            }

            objLoginStatus.status = "Authentication Failure";

            return(Ok(objLoginStatus));
        }
Ejemplo n.º 19
0
        public IActionResult Index([FromBody] ProfileDTO Profile)
        {
            ProfileStatus objProfileStatus = new ProfileStatus();

            objProfileStatus.isSuccessful = true;
            objProfileStatus.status       = "";

            #region Validation ****************************
            EmailValidation objEmailValidation = new EmailValidation();
            if (!objEmailValidation.IsValidEmail(Profile.email))
            {
                objProfileStatus.status       = "This Email is not valid.";
                objProfileStatus.isSuccessful = false;
                return(Ok(objProfileStatus));
            }

            if ((Profile.firstName == null) || (Profile.firstName.Length < 1))
            {
                objProfileStatus.status       = "This First Name is not long enough.";
                objProfileStatus.isSuccessful = false;
                return(Ok(objProfileStatus));
            }

            if ((Profile.lastName == null) || (Profile.lastName.Length < 1))
            {
                objProfileStatus.status       = "This Last Name is not long enough.";
                objProfileStatus.isSuccessful = false;
                return(Ok(objProfileStatus));
            }
            #endregion

            // Update User ****************************

            string CurrentUser = this.User.Identity.Name;

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
            optionsBuilder.UseSqlServer(GetConnectionString());

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                try
                {
                    // Check the Email
                    string strEmailToCheck      = Profile.email.Trim().ToLower();
                    var    objAdefHelpDeskEmail = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                                   where AdefHelpDeskUsers.Email.ToLower() == strEmailToCheck
                                                   where AdefHelpDeskUsers.Username != CurrentUser
                                                   select AdefHelpDeskUsers).FirstOrDefault();

                    if (objAdefHelpDeskEmail != null)
                    {
                        // User is already taken
                        objProfileStatus.status       = "This Email address is already taken.";
                        objProfileStatus.isSuccessful = false;
                        return(Ok(objProfileStatus));
                    }

                    // Get the user
                    var objUser = (from user in context.AdefHelpDeskUsers
                                   where user.Username == CurrentUser
                                   select user).FirstOrDefault();

                    if (objUser != null)
                    {
                        // Update them
                        objUser.FirstName = Profile.firstName.Trim();
                        objUser.LastName  = Profile.lastName.Trim();
                        objUser.Email     = Profile.email.Trim();

                        #region See if the password will be updated
                        if (
                            (Profile.orginalpassword != null) &&
                            (Profile.orginalpassword.Trim().Length > 1) &&
                            (Profile.password != null) &&
                            (Profile.password.Trim().Length > 1)
                            )
                        {
                            // The original password must be correct
                            var user         = _userManager.Users.Where(x => x.UserName == CurrentUser).FirstOrDefault();
                            var SignInResult = _userManager.CheckPasswordAsync(user, Profile.orginalpassword.Trim()).Result;

                            if (!SignInResult)
                            {
                                objProfileStatus.status =
                                    "The original password must be correct to set the new password.";
                                objProfileStatus.isSuccessful = false;
                                return(Ok(objProfileStatus));
                            }

                            // First try to update the password in the ASP.NET Membership provider
                            var result = _userManager.ChangePasswordAsync(
                                user, Profile.orginalpassword.Trim(), Profile.password.Trim()).Result;

                            if (!result.Succeeded)
                            {
                                // Return the errors
                                string strErrors = "";
                                foreach (var Error in result.Errors)
                                {
                                    strErrors = strErrors + "\n" + Error.Description;
                                }

                                objProfileStatus.status       = strErrors;
                                objProfileStatus.isSuccessful = false;
                                return(Ok(objProfileStatus));
                            }
                        }
                        #endregion

                        // Save changes
                        context.SaveChanges();
                    }
                    else
                    {
                        objProfileStatus.isSuccessful = false;
                        objProfileStatus.status       = $"Could not find {CurrentUser} in database";
                    }
                }
                catch (Exception ex)
                {
                    objProfileStatus.isSuccessful = false;
                    objProfileStatus.status       = ex.GetBaseException().Message;
                }
            }

            return(Ok(objProfileStatus));
        }
        public static DTOStatus DeleteCategory(int id, string ConnectionString)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(ConnectionString);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var categoryNode = context.AdefHelpDeskCategories.SingleOrDefaultAsync(x => x.CategoryId == id).Result;

                if (categoryNode == null)
                {
                    objDTOStatus.StatusMessage = $"id #{id} Not Found";
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }

                try
                {
                    // Get all Task Categories of the current item
                    var ColExistingTaskCategories = from objTaskCategory in context.AdefHelpDeskTaskCategories
                                                    where objTaskCategory.CategoryId == categoryNode.CategoryId
                                                    select objTaskCategory;

                    if (ColExistingTaskCategories.Count() > 0)
                    {
                        context.AdefHelpDeskTaskCategories.RemoveRange(ColExistingTaskCategories);
                        context.SaveChanges();
                    }

                    int?ParentNodeID = null;

                    // Possibly update Child Nodes
                    if (categoryNode.ParentCategoryId.HasValue)
                    {
                        // Get the Parent Node of the ExistingNode
                        ParentNodeID = categoryNode.ParentCategoryId.Value;
                    }

                    // Get the children of the current item
                    var ChildResults = from objNode in context.AdefHelpDeskCategories
                                       where objNode.ParentCategoryId.Value == categoryNode.CategoryId
                                       where objNode.ParentCategoryId.HasValue == true
                                       select objNode;

                    // Loop thru each Child of the current Node
                    foreach (var objChild in ChildResults)
                    {
                        // Update the Parent Node
                        // for the Child Node
                        objChild.ParentCategoryId = ParentNodeID;
                    }

                    context.AdefHelpDeskCategories.Remove(categoryNode);
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                }
            }

            return(objDTOStatus);
        }
Ejemplo n.º 21
0
        public IActionResult SaveSearchParameters([FromBody] SearchTaskParameters paramSearchTaskParameters)
        {
            // See if the user is logged in
            try
            {
                if (this.User.Identity.IsAuthenticated)
                {
                    // Get UserId
                    int UserId = UtilitySecurity.UserIdFromUserName(this.User.Identity.Name, GetConnectionString());

                    var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                    optionsBuilder.UseSqlServer(GetConnectionString());

                    using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                    {
                        // First remove any existing records for the user
                        context.AdefHelpDeskLastSearch.RemoveRange(context.AdefHelpDeskLastSearch.Where(x => x.UserId == UserId));
                        context.SaveChanges();

                        AdefHelpDeskLastSearch objNewLastSearch = new AdefHelpDeskLastSearch();

                        objNewLastSearch.UserId      = UserId;
                        objNewLastSearch.SearchText  = (paramSearchTaskParameters.searchText != null) ? paramSearchTaskParameters.searchText.Trim() : "";
                        objNewLastSearch.Status      = (paramSearchTaskParameters.status != null) ? paramSearchTaskParameters.status.Trim() : "";
                        objNewLastSearch.Priority    = (paramSearchTaskParameters.priority != null) ? paramSearchTaskParameters.priority.Trim() : "";
                        objNewLastSearch.CurrentPage = paramSearchTaskParameters.pageNumber;
                        objNewLastSearch.PageSize    = paramSearchTaskParameters.rowsPerPage;

                        if (paramSearchTaskParameters.userId != null)
                        {
                            objNewLastSearch.UserId = Convert.ToInt32(paramSearchTaskParameters.userId);
                        }

                        if (paramSearchTaskParameters.assignedRoleId != null)
                        {
                            objNewLastSearch.AssignedRoleId = Convert.ToInt32(paramSearchTaskParameters.assignedRoleId);
                        }

                        if (paramSearchTaskParameters.createdDate != null)
                        {
                            objNewLastSearch.CreatedDate = Utility.CastToDate(paramSearchTaskParameters.createdDate);
                        }

                        if (paramSearchTaskParameters.dueDate != null)
                        {
                            objNewLastSearch.DueDate = Utility.CastToDate(paramSearchTaskParameters.dueDate);
                        }

                        objNewLastSearch.Categories = string.Join(",", paramSearchTaskParameters.selectedTreeNodes);

                        // Save changes
                        context.AdefHelpDeskLastSearch.Add(objNewLastSearch);
                        context.SaveChanges();
                    }
                }
            }
            catch
            {
                // Do nothing if search paramaters cannot be saved
            }

            return(NoContent());
        }
        public static RegisterStatus RegisterUser(RegisterDTO Register, string _DefaultConnection, IWebHostEnvironment _hostEnvironment, UserManager <ApplicationUser> _userManager, SignInManager <ApplicationUser> _signInManager, string CurrentHostLocation, bool BypassVerify, bool SignUserIn)
        {
            // RegisterStatus to return
            RegisterStatus objRegisterStatus = new RegisterStatus();

            objRegisterStatus.status               = "Registration Failure";
            objRegisterStatus.isSuccessful         = false;
            objRegisterStatus.requiresVerification = false;

            // Get values passed
            var paramUserName  = Register.userName.Trim();
            var paramPassword  = Register.password.Trim();
            var paramFirstName = Register.firstName.Trim();
            var paramLastName  = Register.lastName.Trim();
            var paramEmail     = Register.email.Trim();

            // Validation ****************************

            EmailValidation objEmailValidation = new EmailValidation();

            if (!objEmailValidation.IsValidEmail(paramEmail))
            {
                objRegisterStatus.status       = "This Email is not valid.";
                objRegisterStatus.isSuccessful = false;
                return(objRegisterStatus);
            }

            if ((paramUserName == null) || (paramUserName.Length < 1))
            {
                objRegisterStatus.status       = "This Username is not long enough.";
                objRegisterStatus.isSuccessful = false;
                return(objRegisterStatus);
            }

            var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();

            optionsBuilder.UseSqlServer(_DefaultConnection);

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                // Check the Username
                var objAdefHelpDeskUserName = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                               where AdefHelpDeskUsers.Username == paramUserName
                                               select AdefHelpDeskUsers).FirstOrDefault();

                if (objAdefHelpDeskUserName != null)
                {
                    // User is already taken
                    objRegisterStatus.status       = "This Username is already taken.";
                    objRegisterStatus.isSuccessful = false;
                    return(objRegisterStatus);
                }

                // Check the Email
                var objAdefHelpDeskEmail = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                            where AdefHelpDeskUsers.Email == paramEmail
                                            select AdefHelpDeskUsers).FirstOrDefault();

                if (objAdefHelpDeskEmail != null)
                {
                    // User is already taken
                    objRegisterStatus.status       = "This Email address is already taken.";
                    objRegisterStatus.isSuccessful = false;
                    return(objRegisterStatus);
                }
            }

            // Create Account ****************************

            // User Table
            try
            {
                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    AdefHelpDeskUsers objAdefHelpDeskUsers = new AdefHelpDeskUsers();
                    objAdefHelpDeskUsers.Username  = paramUserName;
                    objAdefHelpDeskUsers.Email     = paramEmail;
                    objAdefHelpDeskUsers.FirstName = paramFirstName;
                    objAdefHelpDeskUsers.LastName  = paramLastName;
                    objAdefHelpDeskUsers.Password  = ""; // No longer store the password here

                    context.AdefHelpDeskUsers.Add(objAdefHelpDeskUsers);
                    context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                // Return the error
                objRegisterStatus.status       = ex.GetBaseException().Message;
                objRegisterStatus.isSuccessful = false;
                return(objRegisterStatus);
            }

            // Membership API

            var user = new ApplicationUser {
                UserName = paramUserName, Email = paramEmail
            };
            var result = _userManager.CreateAsync(user, paramPassword).Result;

            if (!result.Succeeded)
            {
                // Create user failed
                try
                {
                    // Delete user from the User table
                    using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                    {
                        var objAdefHelpDeskUser = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                                   where AdefHelpDeskUsers.Username == paramUserName
                                                   select AdefHelpDeskUsers).FirstOrDefault();

                        if (objAdefHelpDeskUser != null)
                        {
                            context.AdefHelpDeskUsers.Remove(objAdefHelpDeskUser);
                            context.SaveChanges();
                        }
                    }
                }
                catch
                {
                    // Do nothing if this fails
                }

                // Return the errors from the Memberhip API Creation
                string strErrors = "";
                foreach (var Error in result.Errors)
                {
                    strErrors = strErrors + "\n" + Error.Description;
                }

                objRegisterStatus.status       = strErrors;
                objRegisterStatus.isSuccessful = false;
                return(objRegisterStatus);
            }

            objRegisterStatus.status       = "Success";
            objRegisterStatus.isSuccessful = true;

            // *** Verified Accounts
            // Determine if verified registration is turned on
            // and BypassVerify is also on

            GeneralSettings objGeneralSettings = new GeneralSettings(_DefaultConnection);

            if ((!BypassVerify) && (objGeneralSettings.VerifiedRegistration))
            {
                // Get a random verify code
                string strVerifyCode = CreateVerificationKey(5);

                // Write it to the users record
                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    var objAdefHelpDeskUser = (from AdefHelpDeskUsers in context.AdefHelpDeskUsers
                                               where AdefHelpDeskUsers.Username == paramUserName
                                               select AdefHelpDeskUsers).FirstOrDefault();

                    if (objAdefHelpDeskUser != null)
                    {
                        objAdefHelpDeskUser.VerificationCode = strVerifyCode;
                        context.AdefHelpDeskUsers.Update(objAdefHelpDeskUser);
                        context.SaveChanges();
                    }
                }

                // Send the user the verification email
                string strFullName = $"{paramFirstName} {paramLastName}";

                // Get file and make replacements
                string strEmailContents = System.IO.File.ReadAllText(System.IO.Path.Combine(_hostEnvironment.ContentRootPath, "SystemFiles", "Email-UserVerification.txt").Replace(@"\", @"/"));
                strEmailContents = strEmailContents.Replace("[strFullName]", strFullName);
                strEmailContents = strEmailContents.Replace("[CurrentHostLocation]", CurrentHostLocation);
                strEmailContents = strEmailContents.Replace("[paramUserName]", paramUserName);
                strEmailContents = strEmailContents.Replace("[strVerifyCode]", strVerifyCode);

                // Send Email
                // Async is turned off because we may have verified registration but the email server may not be working
                // The user needs to know this because their registration cannot proceed
                string smtpStatus = Email.SendMail(
                    false,
                    _DefaultConnection,
                    paramEmail,
                    strFullName,
                    "", "",
                    objGeneralSettings.SMTPFromEmail,
                    "Verification Email",
                    "ADefHelpDesk Registration Verification Email",
                    $"{strEmailContents} <br><br> This Email was sent from: {CurrentHostLocation}.");

                if (smtpStatus != "")
                {
                    // There was some sort of error - return it
                    objRegisterStatus.status               = smtpStatus;
                    objRegisterStatus.isSuccessful         = false;
                    objRegisterStatus.requiresVerification = true;
                    return(objRegisterStatus);
                }

                // Tell user they need to use the code that was just sent
                objRegisterStatus.requiresVerification = true;
                objRegisterStatus.status = $"Your registration was successful. ";
                objRegisterStatus.status = objRegisterStatus.status + $"However, registration is verified. ";
                objRegisterStatus.status = objRegisterStatus.status + $"You have been emailed a verification code that must be used to complete your registration.";
            }
            else
            {
                if (SignUserIn)
                {
                    // Sign the User in
                    var SignInResult = _signInManager.PasswordSignInAsync(
                        paramUserName, paramPassword, false, lockoutOnFailure: false).Result;

                    if (!SignInResult.Succeeded)
                    {
                        // Return the error
                        objRegisterStatus.status       = $"Could not sign user {paramUserName} in.";
                        objRegisterStatus.isSuccessful = false;
                        return(objRegisterStatus);
                    }
                }
            }

            return(objRegisterStatus);
        }