Пример #1
0
        public async Task <ActionResult <IEnumerable <WorkPackage> > > GetWorkPackages()
        {
            //return Ok(await _workPackageRepository.GetAll());
            List <WorkPackage> workPackages = new List <WorkPackage>();

            foreach (WorkPackage wp in await _workPackageRepository.GetAll())
            {
                wp.ChildrenWorkPackages = null;
                workPackages.Add(wp);
            }
            return(workPackages);
        }
        public async Task <ActionResult <WorkPackageReport> > PostWorkPackageReport(WorkPackageReportViewModel workPackageReportViewModel)
        {
            try
            {
                int wpId = (await _workPackageRepository.GetAll())
                           .FirstOrDefault(w => w.WorkPackageCode.Equals(workPackageReportViewModel.WorkPackageCode))
                           .WorkPackageId;
                await _workPackageReportRepository.Add(new WorkPackageReport(workPackageReportViewModel, wpId));

                var thisReport = (await _workPackageReportRepository.GetAll()).OrderByDescending(x => x.LastUpdatedTime).FirstOrDefault();

                foreach (WorkPackageReportDetailsViewModel details in workPackageReportViewModel.Details)
                {
                    WorkPackageReportDetails wpReportDetails = new WorkPackageReportDetails();
                    wpReportDetails.LabourGradeId                   = details.LabourGradeId;
                    wpReportDetails.WorkPackageReportId             = thisReport.WorkPackageReportId;
                    wpReportDetails.LabourGradeName                 = details.LabourGradeName;
                    wpReportDetails.ResponsibleEngineerBudgetInDays = details.ReBudgetDay;
                    wpReportDetails.TotalDays = details.TotalDays;
                    wpReportDetails.ReEstimateAtCompletion = details.ReEAC;
                    wpReportDetails.ReEstimateToCompletion = details.ReETC;
                    wpReportDetails.VariancePercent        = details.Variance;
                    wpReportDetails.CompletionPercent      = details.Complete;
                    wpReportDetails.LastUpdatedBy          = Environment.UserName;
                    wpReportDetails.LastUpdatedTime        = DateTime.Now;

                    await _workPackageReportDetailsRepository.Add(wpReportDetails);

                    //await _workPackageReportDetailsRepository.Add(new WorkPackageReportDetails(details, wpId));
                }

                return(Ok(200));
            }
            catch (NullReferenceException e)
            {
                return(Ok(new Exception("Null pointer: WorkPackageview's wp code might not exist in database. " +
                                        "Cannot get ID for wp code.")));
            }
            catch (Exception e)
            {
                return(Ok(new Exception("Failed to add, something went wrong: " + e.ToString())));
            }
        }