Example #1
0
        public async Task <IHttpActionResult> UpdateProject(ProjectRequestViewModel project)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Project pro = await db.Projects.FindAsync(project.Id);

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

            if (ProjectHelper.HasUpdateAccess(pro) == false)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Access"));
            }

            db.Entry(pro).State  = EntityState.Modified;
            pro.ProjectName      = project.Name;
            pro.Description      = project.Description;
            pro.Tag              = project.Tag;
            pro.Status           = project.Status;
            pro.LastModifiedById = db.ShqUsers.Where(u => u.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId;
            pro.LastModfiedTime  = DateTime.Now;

            pro.ProjectsAccess.RemoveAll(item => item.ProjectId == pro.Id);
            if (project.UsersPrivileges.Count > 0)
            {
                foreach (var item in project.UsersPrivileges)
                {
                    var newAccess = new ProjectShqUsers()
                    {
                        ProjectId        = project.Id,
                        ShqUserId        = db.ShqUsers.Where(u => u.EmailAddress == item.EmailAddress).FirstOrDefault().IdentityUserId,
                        Privilege        = item.Privilege,
                        CreatedById      = pro.CreatedById,
                        LastModifiedById = pro.CreatedById
                    };
                    newAccess.LastModifiedById = newAccess.CreatedById;
                    pro.ProjectsAccess.Add(newAccess);
                }
            }

            await db.SaveChangesAsync();

            ProjectViewModel result = new ProjectViewModel(pro, db);

            result.Privilege = ShqConstants.AllowProjectUpdate;
            (new AuditsController()).AddAuditEntry("api/Projects/Update", JsonConvert.SerializeObject(result));
            return(Ok(result));
        }
Example #2
0
        public IActionResult GetProjectList(ProjectRequestViewModel query, TokenModel tokenModel)
        {
            var searchModel = Mapper.Map <SearchProjectDto>(query);
            var list        = _projectService.GetList(searchModel);

            return(Ok(new PageResponseViewModel()
            {
                Data = list.Items, Page = new PageViewModel {
                    PageSize = query.PageSize, Total = list.TotalNum, PageIndex = query.PageIndex
                }
            }));
        }
Example #3
0
        public async Task <IHttpActionResult> AddProject(ProjectRequestViewModel projectView)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Project pro = await db.Projects.FindAsync(projectView.Id);

            if (pro != null)
            {
                return(Ok("已存在"));
            }

            pro = await db.Projects.FirstOrDefaultAsync(item => item.ProjectName == projectView.Name);

            if (pro != null)
            {
                return(Ok("已存在"));
            }

            Project project = projectView.ToProject();

            project.CreatedById      = db.ShqUsers.Where(u => u.IdentityUser.UserName == HttpContext.Current.User.Identity.Name).FirstOrDefault().IdentityUserId;
            project.LastModifiedById = project.CreatedById;

            db.Projects.Add(project);

            if (project.Type == "FTAProject")
            {
                db.FTAProjects.Add(new FTAProject()
                {
                    Id = Guid.NewGuid(), ProjectId = projectView.Id, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById
                });
            }

            if (project.Type == "FMEAProject")
            {
                db.FMEAProjects.Add(new FMEAProject()
                {
                    Id = Guid.NewGuid(), ProjectId = projectView.Id, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById
                });
            }

            if (project.Type == "WorkProject")
            {
                var wp = db.WorkProjects.Add(new WorkProject()
                {
                    Id = Guid.NewGuid(), ProjectId = projectView.Id, Level = projectView.Level, CreatedById = project.CreatedById, LastModifiedById = project.LastModifiedById, WorkProjectTemplateId = ShqConstants.DefaultWorkProjectTemplateId
                });
                db.SaveChanges();
                try
                {
                    ProjectFilesController pfc = new ProjectFilesController();
                    await pfc.SyncProjectFiles(wp.ProjectId);
                }
                catch (Exception)
                {
                }
            }

            int i = 0;

            if (projectView.UsersPrivileges.Count > 0)
            {
                i++;
                foreach (var item in projectView.UsersPrivileges)
                {
                    var newAccess = new ProjectShqUsers()
                    {
                        ProjectId        = project.Id,
                        ShqUserId        = db.ShqUsers.Where(u => u.EmailAddress == item.EmailAddress).FirstOrDefault().IdentityUserId,
                        Privilege        = item.Privilege,
                        CreatedById      = project.CreatedById,
                        LastModifiedById = project.CreatedById
                    };
                    newAccess.LastModifiedById = newAccess.CreatedById;
                    db.ProjectShqUsers.Add(newAccess);
                }
            }

            await db.SaveChangesAsync();

            ProjectViewModel result = new ProjectViewModel(project, db);

            result.Description = i.ToString();
            result.Privilege   = ShqConstants.AllowProjectUpdate;

            (new AuditsController()).AddAuditEntry("api/Projects/Add", JsonConvert.SerializeObject(result));
            return(Ok(result));
        }