private List<PLANWithRegionalRequestViewModel> GetRequestWithPlan(RegionalRequest regionalRequest)
{
var result = new List<PLANWithRegionalRequestViewModel>();
if (regionalRequest.PlanID == 0)
{
return null;
}
if (regionalRequest.ProgramId == 1)
{
var details = regionalRequest.RegionalRequestDetails;
var hrd = _hrdService.FindBy(m => m.PlanID == regionalRequest.PlanID).FirstOrDefault();
var woredaG = (from detail in details
group detail by detail.Fdp.AdminUnit
into woredaDetail
select woredaDetail);
result.AddRange(from sw in woredaG
from hrdDetails in hrd.HRDDetails
let oneWoreda = sw.ToList()
let regionalRequestDetail = oneWoreda.FirstOrDefault()
where regionalRequestDetail != null && hrdDetails.AdminUnit.AdminUnitID == sw.Key.AdminUnitID
select new PLANWithRegionalRequestViewModel()
{
zone = regionalRequestDetail.Fdp.AdminUnit.AdminUnit2.Name,
Woreda = sw.Key.Name,
RequestedBeneficiaryNo = sw.Sum(m => m.Beneficiaries),
PlannedBeneficaryNo = hrd != null ? hrd.HRDDetails.First(m => m.AdminUnit.AdminUnitID == sw.Key.AdminUnitID).NumberOfBeneficiaries : 0,
Difference = ((hrd != null ? hrd.HRDDetails.First(m => m.AdminUnit.AdminUnitID == sw.Key.AdminUnitID).NumberOfBeneficiaries : 0) - (sw.Sum(m => m.Beneficiaries))),
RegionalRequestDetails = oneWoreda
});
}
if (regionalRequest.ProgramId == 2)
{
var details = regionalRequest.RegionalRequestDetails;
var psnp = _RegionalPSNPPlanService.FindBy(m => m.PlanId == regionalRequest.PlanID).FirstOrDefault();
var woredaG = (from detail in details
group detail by detail.Fdp.AdminUnit
into woredaDetail
select woredaDetail);
result.AddRange(from sw in woredaG
from pnspDetail in psnp.RegionalPSNPPlanDetails
let oneWoreda = sw.ToList()
let regionalRequestDetail = oneWoreda.FirstOrDefault()
where regionalRequestDetail != null && pnspDetail.PlanedWoreda.AdminUnitID == sw.Key.AdminUnitID
select new PLANWithRegionalRequestViewModel()
{
zone = regionalRequestDetail.Fdp.AdminUnit.AdminUnit2.Name,
Woreda = sw.Key.Name,
RequestedBeneficiaryNo = sw.Sum(m => m.Beneficiaries),
PlannedBeneficaryNo = psnp != null ? psnp.RegionalPSNPPlanDetails.First(d => d.PlanedWoredaID == sw.Key.AdminUnitID).BeneficiaryCount : 0,
Difference = ((psnp != null ? psnp.RegionalPSNPPlanDetails.First(d => d.PlanedWoredaID == sw.Key.AdminUnitID).BeneficiaryCount : 0) - (sw.Sum(m => m.Beneficiaries))),
RegionalRequestDetails = oneWoreda
});
}
else if (regionalRequest.ProgramId == 3)
{
var details = regionalRequest.RegionalRequestDetails;
var woredaG = (from detail in details
group detail by detail.Fdp.AdminUnit
into woredaDetail
select woredaDetail);
result.AddRange(from sw in woredaG
let oneWoreda = sw.ToList()
let regionalRequestDetail = oneWoreda.FirstOrDefault()
where regionalRequestDetail != null
select new PLANWithRegionalRequestViewModel()
{
zone = regionalRequestDetail.Fdp.AdminUnit.AdminUnit2.Name,
Woreda = sw.Key.Name,
RequestedBeneficiaryNo = sw.Sum(m => m.Beneficiaries),
//PlannedBeneficaryNo = 0,
//Difference = 0 - sw.Sum(m => m.Beneficiaries),
RegionalRequestDetails = oneWoreda
});
}
return result;
}