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 Post(IndividualProjectPage page)
        {
            Project project = new Project(page.ID, page.Name, page.desc, page.startDate, page.endDate, page.completion, page.salaryBudget, page.totalInvoice, page.materialBudget, page.spendToDate,
                                          page.progressSurveySent, page.progressSurveyResult,
                                          page.followupSurveySent, page.followupSurveyResult, page.isProposal, page.costMultiplier, page.isUnderISO13485, page.businessCode, page.lead[0].name);

            // <-- in the param
            _projectRepository.Add(project);

            for (int i = 0; i < page.phaseArr.Count; i++)
            {
                PhaseArr currentPhaseArr = page.phaseArr[i];
                Phase    phase           = new Phase(currentPhaseArr.phaseID, page.ID, currentPhaseArr.name, currentPhaseArr.startDate, currentPhaseArr.endDate, currentPhaseArr.isRecordDone, currentPhaseArr.predictedDurationInWeeks,
                                                     currentPhaseArr.actualDurationInWeeks, currentPhaseArr.impact, 0, 0, null);
                phase.MaterialProjectedBudget = page.material[i].projectedBudget;
                phase.MaterialActualBudget    = page.material[i].actualBudget;
                phase.MaterialImpact          = page.material[i].impact;
                _phaseRepository.Add(phase);
            }

            EmployeeAssignment ea = new EmployeeAssignment();

            for (int i = 0; i < page.employeeSalaryList.Count; i++)
            {
                ea.EmployeeId = page.employeeSalaryList[i].empID;

                ea.Position         = "somePosition"; //hardcoded for now?
                ea.SalaryMultiplier = page.costMultiplier;

                for (int j = 0; j < page.employeeSalaryList[i].phaseDetailsList.Count; j++)
                {
                    PhaseDetails currentPhaseDetails = page.employeeSalaryList[i].phaseDetailsList[j];
                    ea.PhaseId        = currentPhaseDetails.phaseID;
                    ea.ActualHours    = currentPhaseDetails.actualHr;
                    ea.ProjectedHours = currentPhaseDetails.budgetHr;
                    ea.Impact         = currentPhaseDetails.impact;
                    for (int z = 0; z < page.lead.Count; z++)
                    {
                        if (ea.EmployeeId == page.lead[z].empID)
                        {
                            ea.IsProjectManager = true;
                        }
                        else
                        {
                            ea.IsProjectManager = false;
                        }
                    }
                    _employeeAssignmentRepository.Add(ea);
                }
            }

            ProjectedWorkload pw = new ProjectedWorkload();

            for (int i = 0; i < page.workloadArr.Count; i++)
            {
                WorkloadArr currentWorkloadArr = page.workloadArr[i];
                foreach (Employee e in _employeeRepository.GetAll())
                {
                    if (e.EmployeeId == currentWorkloadArr.empID)
                    {
                        pw.ProjectId  = page.ID;
                        pw.EmployeeId = e.EmployeeId;
                        for (int k = 0; k < 6; k++)
                        {
                            pw.Month = DateTime.Now.AddMonths(k).Month;
                            pw.Year  = DateTime.Now.AddMonths(k).Year;
                            //pw.Month = ControllerHelper.CalculateCurrentMonth(currentMonth, k-1);
                            pw.Hours = currentWorkloadArr.getHoursWorked(k + 1);
                            _projectedWorkloadRepository.Add(pw);
                        }
                    }
                }
            }

            foreach (InvoiceArr i in page.invoiceArr)
            {
                Invoice invoice = new Invoice(page.ID, "placeholdername", i.date, i.amount);
                _invoiceRepository.Add(invoice);
            }


            return(new OkObjectResult(201));
        }