using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using wispro.sp.entity; using wispro.sp.share; namespace wispro.sp.api.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ProjectController : ControllerBase { spDbContext Context; public ProjectController(spDbContext context) { Context = context; } public List GetProjects(int state) { return Context.ProjectInfos .Include(p => p.Customer) .Include(p=>p.Reviewer) .Include(p => p.WorkflowUser) .Where(s => s.CaseState == state).ToList(); } public List GetAll() { var retList = Context.ProjectInfos .Include(p => p.Customer) .Include(p => p.Reviewer) .Include(p => p.WorkflowUser) .ToList(); return retList; } public bool SetFinished(string caseNo) { var obj = Context.ProjectInfos.FirstOrDefault(s=>s.CaseNo == caseNo ); if(obj != null) { try { obj.CaseState = 4; Context.SaveChanges(); return true; } catch(Exception ex) { return false; } } else { return false; } } public List GetMyProjects() { return Context.ProjectContentRecords .Include(p=>p.CalMonth) .Include(p => p.Reviewer) .Include(p => p.Project) .Include(p=>p.ProjectWorkContents) .Where(p => p.Staff.Name == User.Identity.Name).ToList(); } public ProjectContents getProjectWorkContent(int Id) { var retObj = Context.ProjectContentRecords .Include(p => p.CalMonth) .Include(p => p.Reviewer) .Include(p => p.Project) .Include(p => p.ProjectWorkContents) .FirstOrDefault(p=>p.Id == Id); if(retObj != null) { ProjectContents ret = new ProjectContents(); ret.ProjectContentRecord = retObj; ret.ProjectWorkContents = new List(); foreach(var wContent in retObj.ProjectWorkContents) { ViewProjectWorkContent tem = new ViewProjectWorkContent(); tem.modifyState = ModifyState.UnChanged; tem.Content = wContent.Content; tem.ActualPerformance = wContent.ActualPerformance; tem.ContentRecordId = wContent.ContentRecordId; tem.FinalPerformance = wContent.FinalPerformance; tem.TakeTime = wContent.TakeTime; tem.TimeSpan = wContent.TimeSpan; tem.WorkDate = wContent.WorkDate; ret.ProjectWorkContents.Add(tem); } return ret; } return null; } public ApiSaveResponse SaveProjectWorkContent(ProjectContents saveObj) { return null; } } }