public ActionResult NeedAssessment_Plan([DataSourceRequest] DataSourceRequest request, int id = 0)
        {
            var         needAssessment = _needAssessmentService.GetAllNeedAssessment().Select(m => m.PlanID).Distinct();
            List <Plan> plans;

            if (id == 0)
            {
                plans =
                    _planService.FindBy(
                        m => m.Program.Name == "Relief" && (m.Status == (int)PlanStatus.Draft || m.Status == (int)PlanStatus.AssessmentCreated))
                    .OrderByDescending(m => m.PlanID)
                    .ToList();
            }
            else
            {
                plans =
                    _planService.FindBy(
                        m => needAssessment.Contains(m.PlanID) && m.Program.Name == "Relief" && m.Status == id)
                    .OrderByDescending(m => m.PlanID)
                    .ToList();
            }
            var statuses = _commonService.GetStatus(WORKFLOW.Plan);
            var needAssesmentsViewModel = NeedAssessmentViewModelBinder.GetNeedAssessmentPlanInfo(plans, statuses);

            return(Json(needAssesmentsViewModel.ToDataSourceResult(request), JsonRequestBehavior.AllowGet));
        }