[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"));
        }
示例#2
0
        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);
 }