[ValidateAntiForgeryToken] //this is here to prevent XSS (cross site scripting attacks) public async Task <IActionResult> SaveNewProject(CreateProjectInput newProjectInput) { if (TempData.Peek("userName") == null) { return(UserNotAllowedAccess(isUserLoggedIn: false)); } if (TempData.Peek("userRole").ToString() == "Employee") { return(UserNotAllowedAccess(isUserLoggedIn: true)); } //if the ModelState is invalid return the user to the CreateProject page and show them the validation errors if (!ModelState.IsValid) { List <string> errors = ModelState.Values.SelectMany(p => p.Errors.Select(x => x.ErrorMessage)).ToList(); TempData.Add("CreateProjectInvalid", errors); return(RedirectTo("ProjectManager", "CreateProject")); } var resultList = new WorkHourTrackerListResult() { Errors = new List <string>(), WorkHourTrackList = new List <dynamic>() }; //the request is valid. Now, transform it into CreateProjectDatabaseInput var databaseInput = new CreateProjectDatabaseInput(newProjectInput.ProjectName, newProjectInput.ProjectCodeName, TempData.Peek("userName").ToString()); try { //send the request to the Domain layer await _IProjectManagerDomain.CreateNewProject(databaseInput); resultList.Errors.Add($"Project: {databaseInput.ProjectName} Project CodeName: {databaseInput.ProjectCodeName} has been created. Please assign the project to indivduals to being working on it."); TempData.Add("CreateProjectSuccess", resultList.Errors); } catch (Exception) { resultList.Errors.Add("The ProjectName or ProjectCodeName is already in use in the system. Please use another one."); TempData.Add("CreateProjectError", resultList.Errors); return(RedirectTo("ProjectManager", "CreateProject")); } return(RedirectTo("ProjectManager", "CreateProject")); }
public async Task CreateNewProject(CreateProjectDatabaseInput input) { var p = new DynamicParameters(); p.Add("@p_ProjectGuid", input.ProjectGuid); p.Add("@p_ProjectName", input.ProjectName); p.Add("@p_ProjectCodeName", input.ProjectCodeName); p.Add("@p_CreateDate", input.CreateDate); p.Add("@p_CreateUser", input.CreateUser); using (IDbConnection connection = new SqlConnection(_connectionString)) { await connection.ExecuteAsync("sp_CreateProject", p, commandType : CommandType.StoredProcedure); } }
public async Task CreateNewProject(CreateProjectDatabaseInput input) { await _IProjectManagerRepository.CreateNewProject(input); }