Example #1
0
        public IActionResult Get()
        {
            HashSet <MiddleLevelPage> middleLevelPageSet  = new HashSet <MiddleLevelPage>();
            List <MiddleLevelPage>    middleLevelPageList = new List <MiddleLevelPage>();

            DateTime currentDate = DateTime.Now;
            int      startMonth  = currentDate.Month;
            int      startYear   = currentDate.Year;

            foreach (Project project in _projectRepository.GetAll())
            {
                System.Diagnostics.Debug.Write("PHASE REPO SIZE: " + _phaseRepository.GetAll().Where(p => p.ProjectId == project.ProjectId).ToList().Count);
                foreach (Phase phase in _phaseRepository.GetAll().Where(p => p.ProjectId == project.ProjectId))
                {
                    foreach (Employee emp in _employeeRepository.GetAll())
                    {
                        MiddleLevelPage middleLevelPage = new MiddleLevelPage();  //this actually represents one json object in the middlelevelpage json array, and not the entire page

                        middleLevelPage.empID             = emp.EmployeeId;
                        middleLevelPage.projectID         = project.ProjectId;
                        middleLevelPage.empName           = emp.Name;
                        middleLevelPage.projectCompletion = project.PercentageComplete;
                        middleLevelPage.projectEndDate    = project.ProjectEndDate;
                        middleLevelPage.projectName       = project.ProjectName;

                        EmployeeAssignment ea = _employeeAssignmentRepository.Get(phase.PhaseId, emp.EmployeeId);

                        //If ea is null, then it means the Employee is not working in that Phase for that Project, so there is no workload data for that Employee
                        if (ea != null)
                        {
                            for (int k = 0; k < 6; k++)
                            {
                                int currentMonth = DateTime.Now.AddMonths(k).Month;
                                int currentYear  = DateTime.Now.AddMonths(k).Year;

                                ProjectedWorkload currentProjectedWorkload = _workloadRepository.Get(project.ProjectId,
                                                                                                     emp.EmployeeId, currentMonth, currentYear);

                                /*If currentProjectedWorkload is null, it means that the Employee doesn't have a workload row for the month.  Thus, we create the workload data
                                 * and set the hours worked to 0. This happens when a new month arrives, since each Employee only has workload data for the first 6 months
                                 * starting from when it is added.
                                 */
                                if (currentProjectedWorkload == null)
                                {
                                    ProjectedWorkload newMonthWorkload = new ProjectedWorkload(project.ProjectId, emp.EmployeeId, currentMonth, currentYear, 0);
                                    _workloadRepository.Add(newMonthWorkload);
                                    currentProjectedWorkload = _workloadRepository.Get(project.ProjectId,
                                                                                       emp.EmployeeId, currentMonth, currentYear);
                                }

                                middleLevelPage.SetMonthlyHoursWorked(k + 1, currentProjectedWorkload.Hours);
                            }
                            middleLevelPageSet.Add(middleLevelPage);
                        }
                    }
                }
            }

            return(Ok(middleLevelPageSet.ToList()));
        }
        public IActionResult GetById(int id)
        {
            IndividualProjectPage individualProjectPage = new IndividualProjectPage
            {
                ID                     = _projectRepository.Get(id).ProjectId,
                Name                   = _projectRepository.Get(id).ProjectName,
                desc                   = _projectRepository.Get(id).ProjectDescription,
                salaryBudget           = _projectRepository.Get(id).SalaryBudget,
                totalInvoice           = _projectRepository.Get(id).TotalInvoice,
                materialBudget         = _projectRepository.Get(id).MaterialBudget,
                spendToDate            = _projectRepository.Get(id).SpentToDate,
                startDate              = _projectRepository.Get(id).ProjectStartDate,
                endDate                = _projectRepository.Get(id).ProjectEndDate,
                completion             = _projectRepository.Get(id).PercentageComplete,
                recoredStoredCompleted = _projectRepository.Get(id).recordStoredCompleted,
                progressSurveyResult   = _projectRepository.Get(id).IsInProgressSurveyComplete,
                progressSurveySent     = _projectRepository.Get(id).IsInProgressSurveySent,
                followupSurveyResult   = _projectRepository.Get(id).IsFollowUpSurveyComplete,
                followupSurveySent     = _projectRepository.Get(id).IsFollowUpSurveySent,
                isProposal             = _projectRepository.Get(id).IsProposal,
                isUnderISO13485        = _projectRepository.Get(id).isUnderISO13485,
                businessCode           = _projectRepository.Get(id).BusinessCode,
                costMultiplier         = _projectRepository.Get(id).CostMultiplier
            };

            HashSet <Lead>   leadList   = new HashSet <Lead>();
            HashSet <Member> memberList = new HashSet <Member>();

            foreach (EmployeeAssignment item in _employeeAssignmentRepository.GetAll())
            {
                if (item.IsProjectManager)
                {
                    foreach (Employee employee in _employeeRepository.GetAll())
                    {
                        if (employee.EmployeeId == item.EmployeeId)
                        {
                            leadList.Add(new Lead(item.EmployeeId, employee.Name, employee.Salary));
                        }
                    }
                }
                else
                {
                    foreach (Employee employee in _employeeRepository.GetAll())
                    {
                        if (employee.EmployeeId == item.EmployeeId)
                        {
                            memberList.Add(new Member(item.EmployeeId, employee.Name, employee.Salary));
                        }
                    }
                }
            }
            individualProjectPage.lead   = leadList.ToList();
            individualProjectPage.member = memberList.ToList();

            individualProjectPage.phaseArr = new List <PhaseArr>();

            foreach (Phase phase in _phaseRepository.GetAll())
            {
                if (phase.ProjectId == id)
                {
                    individualProjectPage.phaseArr.Add(new PhaseArr(phase.PhaseId, phase.Name, phase.StartDate,
                                                                    phase.EndDate, phase.IsRecordDone, phase.PredictedDurationInWeeks, phase.ActualDurationInWeeks,
                                                                    phase.Impact));
                }
            }

            individualProjectPage.workloadArr = new List <WorkloadArr>();
            WorkloadArr currentWorkloadArr = new WorkloadArr();

            foreach (Project proj in _projectRepository.GetAll())
            {
                if (proj.ProjectId == id)
                {
                    foreach (Employee emp in _employeeRepository.GetAll())
                    {
                        ProjectedWorkload currentProjectedWorkload = _projectedWorkloadRepository.Get(proj, emp, DateTime.Now.Month,
                                                                                                      DateTime.Now.Year);
                        if (currentProjectedWorkload != null)
                        {
                            for (int k = 0; k < 6; k++)
                            {
                                int currentMonth = DateTime.Now.AddMonths(k).Month;
                                int currentYear  = DateTime.Now.AddMonths(k).Year;

                                if (emp.EmployeeId == _projectedWorkloadRepository
                                    .Get(proj, emp, currentMonth, currentYear).EmployeeId &&
                                    proj.ProjectId == _projectedWorkloadRepository
                                    .Get(proj, emp, currentMonth, currentYear).ProjectId)
                                {
                                    currentWorkloadArr.empID   = emp.EmployeeId;
                                    currentWorkloadArr.empName = emp.Name;
                                    currentWorkloadArr.SetSpecificMonth(k + 1, _projectedWorkloadRepository
                                                                        .Get(proj, emp, currentMonth, currentYear).Hours);
                                }
                            }
                            individualProjectPage.workloadArr.Add(new WorkloadArr(currentWorkloadArr.empID, currentWorkloadArr.empName, currentWorkloadArr.month1, currentWorkloadArr.month2,
                                                                                  currentWorkloadArr.month3, currentWorkloadArr.month4, currentWorkloadArr.month5, currentWorkloadArr.month6));
                        }
                    }
                }
            }

            individualProjectPage.invoiceArr = new List <InvoiceArr>();
            foreach (Invoice i in _invoiceRepository.GetAll())
            {
                if (i.ProjectId == id)
                {
                    individualProjectPage.invoiceArr.Add(new InvoiceArr(i.InvoiceAmount, i.InvoiceTime));
                }
            }

            individualProjectPage.material = new List <Material>();

            foreach (Phase phase in _phaseRepository.GetAll())
            {
                if (phase.ProjectId == id)
                {
                    individualProjectPage.material.Add(new Material(phase.PhaseId, phase.Name, phase.MaterialActualBudget,
                                                                    phase.MaterialProjectedBudget, phase.MaterialImpact));
                }
            }

            individualProjectPage.employeeSalaryList = new List <EmployeeSalary>();

            foreach (Employee emp in _employeeRepository.GetAll())
            {
                List <PhaseDetails> phaseDetailsList = new List <PhaseDetails>();
                foreach (Phase phase in _phaseRepository.GetAll())
                {
                    if (phase.ProjectId == id && _employeeAssignmentRepository.Get(phase.PhaseId, emp.EmployeeId) != null)
                    {
                        EmployeeAssignment currentEmployeeAssignment = _employeeAssignmentRepository.Get(phase.PhaseId, emp.EmployeeId);
                        phaseDetailsList.Add(new PhaseDetails(phase.PhaseId, phase.Name, currentEmployeeAssignment.ProjectedHours,
                                                              currentEmployeeAssignment.ActualHours, currentEmployeeAssignment.Impact));
                    }
                }
                if (phaseDetailsList.Count != 0)  //to prevent all the employees from being added to the employeeSalaryList.  Only employees that are working on the project will be added.
                {
                    individualProjectPage.employeeSalaryList.Add(new EmployeeSalary(emp.EmployeeId, emp.Name, emp.Salary, phaseDetailsList));
                }
            }

            return(Ok(individualProjectPage));
        }