コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: V1Controller.cs プロジェクト: pottmi/ADefHelpDesk
        public DTOStatus DeleteUser(int UserId)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            // Get Settings
            string CurrentHostLocation = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";
            string ContentRootPath     = _hostEnvironment.ContentRootPath;
            string strCurrentUser      = this.User.Claims.FirstOrDefault().Value;
            string strConnectionString = GetConnectionString();

            string strResponse = UserManagerController.DeleteUser(UserId, _userManager, strConnectionString, strCurrentUser);

            if (strResponse != "")
            {
                objDTOStatus.StatusMessage = strResponse;
                objDTOStatus.Success       = false;
            }
            else
            {
                objDTOStatus.Success = true;
            }

            return(objDTOStatus);
        }
コード例 #3
0
        private DTOStatus DeleteAllUsers()
        {
            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
                {
                    context.Database.ExecuteSqlCommand("delete from ADefHelpDesk_Users");
                    context.Database.ExecuteSqlCommand("delete from AspNetUsers");
                }
                catch (Exception ex)
                {
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                }
            }

            return(objDTOStatus);
        }
コード例 #4
0
        public IActionResult Delete([FromRoute] int id)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

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

            // Must be a Super Administrator to call this Method
            if (!UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                return(BadRequest());
            }
            var result = DeleteUser(id, _userManager, GetConnectionString(), this.User.Identity.Name);

            if (result != "")
            {
                objDTOStatus.Success       = false;
                objDTOStatus.StatusMessage = result;
                return(Ok(objDTOStatus));
            }
            else
            {
                objDTOStatus.Success       = true;
                objDTOStatus.StatusMessage = "";
                return(Ok(objDTOStatus));
            }
        }
コード例 #5
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!checkData())
            {
                return;
            }
            else
            {
                String statusName = Utils.standardNamePerson(txtStatusName.Text);
                statusObject = new DTOStatus("TT0000000", statusName);

                if (statusBUS.InsertStatus(statusObject))
                {
                    XtraCustomMessageBox.Show("Thêm dữ liệu thành công!", "Thông báo", true, 1);
                    btnAdd.Enabled       = true;
                    btnCancelAdd.Enabled = false;
                    btnCancelAdd.Visible = false;
                    btnSave.Enabled      = false;
                }
                else
                {
                    XtraCustomMessageBox.Show("Thêm dữ liệu thất bại!", "Lỗi", true, 4);
                }
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: V1Controller.cs プロジェクト: pottmi/ADefHelpDesk
        public DTOStatus DeleteCategory(int id)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

            // Get Settings
            string strConnectionString = GetConnectionString();

            return(ADefHelpDeskApp.Controllers.WebApi.CategoryController.DeleteCategory(id, strConnectionString));
        }
コード例 #8
0
 /// <summary>
 /// Phương thức thêm mới một Status vào csdl
 /// </summary>
 /// <returns>true: thêm mới thành công, false: thêm mới thất bại</returns>
 public bool InsertStatus(DTOStatus Status)
 {
     try
     {
         return(statusDAO.InsertStatus(Status));
     }
     catch (SqlException)
     {
         throw;
     }
 }
コード例 #9
0
 /// <summary>
 /// Phương thức cập nhật một Status xuống csdl theo id
 /// </summary>
 /// <returns>true: thêm mới thành công, false: thêm mới thất bại</returns>
 public bool UpdateStatus(DTOStatus Status)
 {
     try
     {
         return(statusDAO.UpdateStatus(Status));
     }
     catch (SqlException)
     {
         throw;
     }
 }
コード例 #10
0
        // 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);
        }
コード例 #11
0
ファイル: DAOStatus.cs プロジェクト: OOAD-2015/Hotel-Manager
 /// <summary>
 /// Phương thức cập nhật một Status xuống csdl theo id
 /// </summary>
 /// <returns>true: thêm mới thành công, false: thêm mới thất bại</returns>
 public bool UpdateStatus(DTOStatus Status)
 {
     try
     {
         DataExecute.Instance.createSqlCmd("sp_EditStatusUpdate" /*Truyen vao storeprocedure*/, new object[2] {
             Status.StatusID, Status.StatusName
         });
         return(DataExecute.Instance.updateData(DataConnection.Instance.m_cmd) > 0);
     }
     catch (SqlException)
     {
         throw;
     }
 }
コード例 #12
0
        public DTOStatus ConnectionSetting([FromBody] DTOConnectionSetting objConnectionSetting)
        {
            // The return message
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            // Do not run if we can connect to the current database
            if (CurrentVersion().isNewDatabase == false)
            {
                objDTOStatus.Success       = false;
                objDTOStatus.StatusMessage = "Database already set-up";
            }
            else
            {
                // Create a Database connection string
                string strConnectionString = CreateDatabaseConnectionString(objConnectionSetting);

                // Test the database connection string
                if (DatabaseConnectionValid(strConnectionString))
                {
                    try
                    {
                        // Update the appsettings.json file
                        UpdateDatabaseConnectionString(strConnectionString);

                        // Update the in-memory connection string
                        _DefaultConnection = strConnectionString;
                    }
                    catch (Exception ex)
                    {
                        // appsettings.json file update error
                        objDTOStatus.Success       = false;
                        objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    }
                }
                else
                {
                    // Bad connection setting
                    objDTOStatus.Success       = false;
                    objDTOStatus.StatusMessage = "Connection settings are not valid";
                }
            }

            // Return the result
            return(objDTOStatus);
        }
コード例 #13
0
        private void SaveDataToDatabase()
        {
            if (!checkData())
            {
                return;
            }
            try
            {
                if (m_IsAdd)
                {
                    String statusName = Utils.standardNamePerson(txtStatusName.Text);
                    statusObject = new DTOStatus("TT0000000", statusName);

                    if (statusBUS.InsertStatus(statusObject))
                    {
                        XtraCustomMessageBox.Show("Thêm dữ liệu thành công!", "Thông báo", true, 1);
                    }
                    else
                    {
                        XtraCustomMessageBox.Show("Thêm dữ liệu thất bại!", "Lỗi", true, 4);
                    }
                }
                else
                {
                    String statusName = Utils.standardNamePerson(txtStatusName.Text);
                    statusObject = new DTOStatus(txtStatusId.Text, statusName);

                    if (statusBUS.UpdateStatus(statusObject))
                    {
                        XtraCustomMessageBox.Show("Cập nhật dữ liệu thành công!", "Thông báo", true, 1);
                    }
                    else
                    {
                        XtraCustomMessageBox.Show("Cập nhật dữ liệu thất bại!", "Lỗi", true, 4);
                    }
                }
            }
            catch (System.Exception ex)
            {
                XtraCustomMessageBox.Show(ex.ToString(), "Lỗi", true, 3);
            }
            finally
            {
                updateEnableButtonAndResetValueOfControl(ref btnSave);
            }
        }
コード例 #14
0
        public IActionResult CreateUser([FromBody] DTOUser DTOUser)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

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

            // Must be a Super Administrator to call this Method
            if (!UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                objDTOStatus.StatusMessage = "Must be a Super Administrator to call this method.";
                return(Ok(objDTOStatus));
            }

            string CurrentHostLocation = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";

            return(Ok(CreateUserMethod(DTOUser, _hostEnvironment, _userManager, _signInManager, GetConnectionString(), CurrentHostLocation, this.User.Identity.Name)));
        }
コード例 #15
0
 private void btnDelete_Click(object sender, EventArgs e)
 {
     if (statusMulitiSelect.Selection.Count == 0)
     {
         XtraCustomMessageBox.Show("Chưa có dòng dữ liệu nào được chọn!", "Thông báo", true, 1);
         return;
     }
     try
     {
         System.Collections.ArrayList _liststatusObjectInDelibility = new System.Collections.ArrayList();
         foreach (object _rowObjectItem in statusMulitiSelect.Selection)
         {
             grdvListStatus.FocusedRowHandle -= 1;
             DataRowView _rowObjectDetail = _rowObjectItem as DataRowView;
             statusObject = new DTOStatus(_rowObjectDetail.Row["StatusID"].ToString(), _rowObjectDetail.Row["StatusName"].ToString());
             if (!statusBUS.DeleteStatus(statusObject.StatusID))
             {
                 _liststatusObjectInDelibility.Add(_rowObjectDetail.Row["StatusID"]);
             }
         }
         String _erroContent = "Không thể xóa thông tin có mã số: \n";
         if (_liststatusObjectInDelibility.Count != 0)
         {
             foreach (var item in _liststatusObjectInDelibility)
             {
                 _erroContent += item.ToString() + "\n";
             }
             XtraCustomMessageBox.Show(_erroContent, "Lỗi", true, 4);
         }
         else
         {
             XtraCustomMessageBox.Show("Xóa dữ liệu thành công", "Thông báo", true, 1);
         }
     }
     catch (System.Exception)
     {
         XtraCustomMessageBox.Show("Xóa dữ liệu thất bại", "Lỗi", true, 4);
     }
     finally
     {
         updateEnableButtonAndResetValueOfControl(ref btnDelete);
     }
 }
コード例 #16
0
        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);
        }
コード例 #17
0
ファイル: V1Controller.cs プロジェクト: pottmi/ADefHelpDesk
        public DTOStatus CreateTask(DTOAPITask objTask, DTOAPITaskDetail objTaskDetail, IFormFile objFile)
        {
            DTOStatus objDTOStatus = new DTOStatus();

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

            // Get Settings
            string CurrentHostLocation = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";
            string ContentRootPath     = _hostEnvironment.ContentRootPath;
            string strCurrentUser      = this.User.Claims.FirstOrDefault().Value;
            string strConnectionString = GetConnectionString();
            int    intUserId           = -1;
            bool   IsSuperUser         = true;
            bool   IsAdministrator     = true;
            bool   IsAuthenticated     = true;

            try
            {
                DTOTask paramTask = ExternalAPIUtility.MapAPITaskToTask(objTask, objTaskDetail);

                objDTOStatus = UploadTaskController.CreateTaskMethod(
                    strConnectionString,
                    CurrentHostLocation,
                    ContentRootPath,
                    paramTask,
                    objFile,
                    strCurrentUser,
                    intUserId,
                    IsSuperUser,
                    IsAdministrator,
                    IsAuthenticated);
            }
            catch (Exception ex)
            {
                objDTOStatus.Success       = false;
                objDTOStatus.StatusMessage = ex.GetBaseException().Message;
            }

            return(objDTOStatus);
        }
コード例 #18
0
        public DTOStatus UpdateDatabase()
        {
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            // Must be a Super User to proceed
            if (UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                // Run update scripts
                objDTOStatus = RunUpdateScripts(NewDatabaseVersion, _hostEnvironment, GetConnectionString());
            }
            else
            {
                objDTOStatus.Success       = false;
                objDTOStatus.StatusMessage = "Must be a Super User to proceed";
            }

            // Return the result
            return(objDTOStatus);
        }
コード例 #19
0
        public static DTOStatus RunUpdateScripts(string _NewDatabaseVersion, IWebHostEnvironment _hostEnvironment, string ConnectionString)
        {
            DTOStatus objDTOStatus = new DTOStatus();

            objDTOStatus.Success = true;

            // Get the update scripts
            Dictionary <int, string> ColScripts = UpdateScripts();

            foreach (var sqlScript in ColScripts)
            {
                try
                {
                    // Run the script
                    DTOVersion objVersion = GetDatabaseVersion(_NewDatabaseVersion, ConnectionString);
                    int        intCurrentDatabaseVersion = ConvertVersionToInteger(objVersion.VersionNumber);

                    // Only run the script if it is higher than the
                    // current database version
                    if (sqlScript.Key > intCurrentDatabaseVersion)
                    {
                        var optionsBuilder = new DbContextOptionsBuilder <ADefHelpDeskContext>();
                        optionsBuilder.UseSqlServer(ConnectionString);

                        using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                        {
                            context.Database.ExecuteSqlCommand(GetSQLScript(sqlScript.Value, _hostEnvironment));
                        }
                    }
                }
                catch (Exception ex)
                {
                    objDTOStatus.StatusMessage = ex.Message;
                    objDTOStatus.Success       = false;
                    return(objDTOStatus);
                }
            }

            return(objDTOStatus);
        }
コード例 #20
0
        public IActionResult Put([FromRoute] int id, [FromBody] DTOUser DTOUser)
        {
            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

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

            // Must be a Super Administrator to call this Method
            if (!UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                objDTOStatus.StatusMessage = "Must be a Super Administrator to call this method.";
                return(Ok(objDTOStatus));
            }

            if (id != DTOUser.userId)
            {
                return(BadRequest());
            }

            return(Ok(UpdateUser(id, DTOUser, _userManager, GetConnectionString(), this.User.Identity.Name)));
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        public async Task <IActionResult> Post([FromBody] ApiSecurityDTO ApiSecurityDTO)
        {
            // Must be a Super Administrator to call this Method
            if (!UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

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

            #region Validate
            if (
                (ApiSecurityDTO.username == null || ApiSecurityDTO.username == "") ||
                (ApiSecurityDTO.password == null || ApiSecurityDTO.password == "")
                )
            {
                objDTOStatus.StatusMessage = $"Error: A Username and Password are required.";
                objDTOStatus.Success       = false;
                return(Ok(objDTOStatus));
            }

            if (ApiSecurityDTO.password.Trim().Length < 5)
            {
                objDTOStatus.StatusMessage = $"Error: A password longer than 5 characters is required.";
                objDTOStatus.Success       = false;
                return(Ok(objDTOStatus));
            }
            #endregion

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

                using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
                {
                    // Check for duplicate Username
                    var existingApiSecurity = await context.AdefHelpDeskApiSecurity.SingleOrDefaultAsync(x => x.Username == ApiSecurityDTO.username);

                    if (existingApiSecurity != null)
                    {
                        objDTOStatus.StatusMessage = $"Error: The username {ApiSecurityDTO.username} is already used";
                        objDTOStatus.Success       = false;
                        return(Ok(objDTOStatus));
                    }

                    var newApiSecurityDTO = new AdefHelpDeskApiSecurity();

                    newApiSecurityDTO.Username       = ApiSecurityDTO.username.Trim();
                    newApiSecurityDTO.Password       = ApiSecurityDTO.password.Trim();
                    newApiSecurityDTO.ContactName    = ApiSecurityDTO.contactName;
                    newApiSecurityDTO.ContactCompany = ApiSecurityDTO.contactCompany;
                    newApiSecurityDTO.ContactWebsite = ApiSecurityDTO.contactWebsite;
                    newApiSecurityDTO.ContactEmail   = ApiSecurityDTO.contactEmail;
                    newApiSecurityDTO.ContactPhone   = ApiSecurityDTO.contactPhone;
                    newApiSecurityDTO.IsActive       = ApiSecurityDTO.isActive;

                    context.AdefHelpDeskApiSecurity.Add(newApiSecurityDTO);
                    await context.SaveChangesAsync();

                    ApiSecurityDTO.id = newApiSecurityDTO.Id;

                    // Log to the System Log
                    Log.InsertSystemLog(
                        GetConnectionString(),
                        Constants.WebAPIAccountCreated,
                        this.User.Identity.Name,
                        $"({this.User.Identity.Name}) Created Username: {newApiSecurityDTO.Username}");
                }

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

            return(Ok(objDTOStatus));
        }
コード例 #23
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);
        }
コード例 #24
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);
        }
コード例 #25
0
        public RegisterStatus CreateAdminLogin([FromBody] RegisterDTO objRegister)
        {
            // RegisterStatus to return
            RegisterStatus objRegisterStatus = new RegisterStatus();

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

            // Test for a strong password
            if (!UtilitySecurity.IsPasswordStrong(objRegister.password))
            {
                objRegisterStatus.status       = "The password is not strong enough.";
                objRegisterStatus.isSuccessful = false;
                return(objRegisterStatus);
            }

            // Do not run if we can connect to the current database
            if (CurrentVersion().isNewDatabase == false)
            {
                objRegisterStatus.isSuccessful = false;
                objRegisterStatus.status       = "Cannot create the Admin account because the database is already set-up. Reload your web browser to upgrade using the updated database connection.";
            }
            else
            {
                // Run the scripts to set-up the database
                DTOStatus objDTOStatus = RunUpdateScripts(NewDatabaseVersion, _hostEnvironment, GetConnectionString());

                if (!objDTOStatus.Success)
                {
                    // If scripts have an error return it
                    objRegisterStatus.isSuccessful = false;
                    objRegisterStatus.status       = objDTOStatus.StatusMessage;
                }
                else
                {
                    // Create the Administrator
                    string strCurrentHostLocation = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";
                    objRegisterStatus = RegisterController.RegisterUser(
                        objRegister, GetConnectionString(), _hostEnvironment, _userManager, _signInManager, strCurrentHostLocation, true, true);

                    // There was an error creating the Administrator
                    if (!objRegisterStatus.isSuccessful)
                    {
                        // Delete the record in the version table
                        // So the install can be run again
                        objDTOStatus = ResetVersionTable();

                        if (!objDTOStatus.Success)
                        {
                            // If there is an error return it
                            objRegisterStatus.isSuccessful = false;
                            objRegisterStatus.status       = objDTOStatus.StatusMessage;
                        }
                        else
                        {
                            //  Delete the user in case they were partially created
                            objDTOStatus = DeleteAllUsers();

                            if (!objDTOStatus.Success)
                            {
                                // If there is an error return it
                                objRegisterStatus.isSuccessful = false;
                                objRegisterStatus.status       = objDTOStatus.StatusMessage;
                            }
                        }
                    }
                    else
                    {
                        // Update the created user to be a SuperUser
                        objDTOStatus = MakeUserASuperUser(objRegister.userName);

                        #region Set the upload file path
                        try
                        {
                            string strDefaultFilesPath = ADefHelpDeskApp.Controllers.ApplicationSettingsController.GetFilesPath(_DefaultFilesPath, GetConnectionString());

                            // Get GeneralSettings
                            GeneralSettings objGeneralSettings = new GeneralSettings(GetConnectionString());
                            objGeneralSettings.UpdateFileUploadPath(GetConnectionString(), strDefaultFilesPath);
                        }
                        catch
                        {
                            // Do nothing if this fails
                            // Admin can set the file path manually
                        }
                        #endregion

                        if (!objDTOStatus.Success)
                        {
                            // If there is an error return it
                            objRegisterStatus.isSuccessful = false;
                            objRegisterStatus.status       = objDTOStatus.StatusMessage;
                        }
                    }
                }
            }

            return(objRegisterStatus);
        }
コード例 #26
0
        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);
        }
コード例 #27
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] ApiSecurityDTO ApiSecurityDTO)
        {
            // Must be a Super Administrator to call this Method
            if (!UtilitySecurity.IsSuperUser(this.User.Identity.Name, GetConnectionString()))
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != ApiSecurityDTO.id)
            {
                return(BadRequest());
            }

            // Status to return
            DTOStatus objDTOStatus = new DTOStatus();

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

            #region Validate
            if (ApiSecurityDTO.password == null || ApiSecurityDTO.password == "")
            {
                objDTOStatus.StatusMessage = $"Error: A Password is required.";
                objDTOStatus.Success       = false;
                return(Ok(objDTOStatus));
            }

            if (ApiSecurityDTO.password.Trim().Length < 5)
            {
                objDTOStatus.StatusMessage = $"Error: A password longer than 5 characters is required.";
                objDTOStatus.Success       = false;
                return(Ok(objDTOStatus));
            }
            #endregion

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

            using (var context = new ADefHelpDeskContext(optionsBuilder.Options))
            {
                var existingApiSecurity = await context.AdefHelpDeskApiSecurity.SingleOrDefaultAsync(x => x.Id == id);

                if (existingApiSecurity == null)
                {
                    return(NotFound());
                }

                // Update the ApiSecurity
                existingApiSecurity.ContactName    = ApiSecurityDTO.contactName;
                existingApiSecurity.ContactCompany = ApiSecurityDTO.contactCompany;
                existingApiSecurity.ContactWebsite = ApiSecurityDTO.contactWebsite;
                existingApiSecurity.ContactEmail   = ApiSecurityDTO.contactEmail;
                existingApiSecurity.ContactPhone   = ApiSecurityDTO.contactPhone;
                existingApiSecurity.IsActive       = ApiSecurityDTO.isActive;

                if (ApiSecurityDTO.password != null)
                {
                    if (ApiSecurityDTO.password.Trim().Length > 1)
                    {
                        existingApiSecurity.Password = ApiSecurityDTO.password.Trim();
                    }
                }

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

                try
                {
                    await context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                    return(Ok(objDTOStatus));
                }
                catch (Exception ex)
                {
                    objDTOStatus.StatusMessage = ex.GetBaseException().Message;
                    objDTOStatus.Success       = false;
                    return(Ok(objDTOStatus));
                }

                // Log to the System Log
                Log.InsertSystemLog(
                    GetConnectionString(),
                    Constants.WebAPIAccountUpdated,
                    this.User.Identity.Name,
                    $"({this.User.Identity.Name}) Updated Username: {ApiSecurityDTO.username}");
            }

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

            return(Ok(objDTOStatus));
        }