private void BindgvPlan(int year, decimal DaysPerFarmer, DateTime start, DateTime end, string role) { try { DataTable dtNewPlan = new DataTable(); dtNewPlan.Columns.Add("FarmerID"); dtNewPlan.Columns.Add("FarmerName"); dtNewPlan.Columns.Add("FarmerCode"); dtNewPlan.Columns.Add("FarmerArea"); dtNewPlan.Columns.Add("InspectorID"); dtNewPlan.Columns.Add("InspectorName"); dtNewPlan.Columns.Add("PlanDate"); dtNewPlan.Columns.Add("VisitedDate"); dtNewPlan.Columns.Add("InspectionID"); List <DateTime> dates = GetDates(year, start, end); DataTable dtHolidays = InspectionPlan_DL.Holidays(year, start, end); foreach (DataRow item in dtHolidays.Rows) { string stDate = Convert.ToString(item["HolidayDate"]); if (stDate.Contains("/")) { string[] keys = stDate.Split('/'); DateTime hdate = new DateTime(Convert.ToInt32(keys[2]), Convert.ToInt32(keys[0]), Convert.ToInt32(keys[1])); if (hdate.DayOfWeek != DayOfWeek.Sunday && dates.Contains(hdate)) { dates.Remove(new DateTime(Convert.ToInt32(keys[2]), Convert.ToInt32(keys[0]), Convert.ToInt32(keys[1]))); } } } dates = dates.OrderBy(m => m).ToList(); List <int> months = dates.Select(m => m.Month).Distinct().ToList(); DataTable farmervillages = UnitInformation_DL.FarmersVillageListByIcs("ICS02"); int c = farmervillages.Rows.Count; List <MudarVillage> villages = new List <MudarVillage>(); foreach (DataRow item in farmervillages.Rows) { MudarVillage village = new MudarVillage(); village.VillageName = Convert.ToString(item["City_Village"]); DataTable dtFarmer = Farmer_DL.GetFarmerlistVillagewise(village.VillageName); List <MudarFarmer> farmers = new List <MudarFarmer>(); for (int j = 0; j < dtFarmer.Rows.Count; j++) { MudarFarmer farmer = new MudarFarmer(); farmer.FarmerID = Convert.ToString(dtFarmer.Rows[j]["FarmerID"]); farmer.FirstName = Convert.ToString(dtFarmer.Rows[j]["FirstName"]); farmer.FarmerCode = Convert.ToString(dtFarmer.Rows[j]["FarmerCode"]); farmer.IsVisited = false; farmers.Add(farmer); } int[] visitMonths = ShareEqual(farmers.Count, months.Count); int mn = 0; int skip = 0; foreach (var vm in months) { farmers.Skip(skip).Take(visitMonths[mn]).ToList().ForEach(m => m.VisitedMonth = vm); skip = skip + visitMonths[mn]; mn = mn + 1; } village.Farmers = farmers; villages.Add(village); } DataTable EmployeeTable = BranchsRolesEmployees_DL.GetEmployeBasedonRoleID(role); List <MudarEmployee> emps = new List <MudarEmployee>(); foreach (DataRow item in EmployeeTable.Rows) { MudarEmployee emp = new MudarEmployee(); emp.EmployeeID = new Guid(Convert.ToString(item["EmployeeId"])); emp.EmployeeName = Convert.ToString(item["EmployeeFristName"]); emps.Add(emp); } List <MudarPlanModel> newPlans = new List <MudarPlanModel>(); foreach (var mnth in months) { List <DateTime> monthDates = dates.Where(m => m.Month == mnth && m.Year == year).ToList(); int mod = Convert.ToInt32((monthDates.Count) / c); int l = Convert.ToInt32((monthDates.Count) % c); villages.ForEach(m => m.loopCount = mod); for (int i = 0; i < l; i++) { villages[i].loopCount += 1; } int h = 0; foreach (var item in villages) { List <MudarFarmer> listFarmers = item.Farmers.Where(m => m.VisitedMonth == mnth).ToList(); int[] farmerVisitedPerInsp = ShareEqual(listFarmers.Count, emps.Count); int f = 0; foreach (var item1 in emps) { int[] timesVisit = ShareEqual(farmerVisitedPerInsp[f], item.loopCount); int k = h; foreach (var visit in timesVisit) { List <MudarFarmer> visitFarmers = listFarmers.Where(m => m.IsVisited == false).Take(visit).ToList(); foreach (var farm in visitFarmers) { MudarPlanModel plan = new MudarPlanModel(); plan.FarmerID = farm.FarmerID; plan.FarmerName = farm.FirstName; plan.FarmerCode = farm.FarmerCode; plan.VillageName = item.VillageName; plan.InspectorCode = item1.EmployeeID; plan.InspectorName = item1.EmployeeName; plan.PlanDate = monthDates[k]; plan.VisitedDate = monthDates[k]; var empCheck = newPlans.Where(m => m.PlanDate.ToShortDateString() == plan.PlanDate.ToShortDateString() && m.VillageName == plan.VillageName && m.InspectorName != plan.InspectorName).ToList(); if (empCheck.Count <= 0) { newPlans.Add(plan); } } listFarmers.Where(m => m.IsVisited == false).Take(visit).ToList().ForEach(m => m.IsVisited = true); k = k + villages.Count; if (k >= monthDates.Count) { k = 0; } } f = f + 1; h = h + 1; } h = h - 1; item.Farmers.Where(m => m.VisitedMonth == mnth).ToList().ForEach(m => m.IsVisited = true); } } newPlans = newPlans.OrderBy(m => m.PlanDate).ToList(); foreach (var item in newPlans) { DataRow newrow = dtNewPlan.NewRow(); newrow["FarmerID"] = item.FarmerID; newrow["FarmerName"] = item.FarmerName; newrow["FarmerCode"] = item.FarmerCode; newrow["FarmerArea"] = item.VillageName; newrow["InspectorID"] = item.InspectorCode; newrow["InspectorName"] = item.InspectorName; newrow["PlanDate"] = item.PlanDate.ToShortDateString(); newrow["VisitedDate"] = item.VisitedDate.ToShortDateString(); dtNewPlan.Rows.Add(newrow); } dt = dtNewPlan; if (dt.Rows.Count > 0) { Session["Inspec"] = string.Empty; Session["Inspec"] = dt; lblFarmers.Text = dt.Rows.Count.ToString(); divShowPlanDetails.Visible = true; btnSubmit.Visible = true; gvPlan.DataSource = dt; gvPlan.DataBind(); } else { Response.Write("<script>alert('No Data Found for InspectionPlan !!!!'</script>"); } } catch (Exception ex) { Session["ErrorMsg"] = ex.Message; Response.Redirect("~/NoAccess.aspx", false); } }
// new code testing purpose public DataTable Newoneplan(int year, decimal DaysPerFarmer, DateTime startDate, DateTime endDate, string role) { DataTable dtNewPlan = new DataTable(); dtNewPlan.Columns.Add("FarmerID"); dtNewPlan.Columns.Add("FarmerName"); dtNewPlan.Columns.Add("FarmerCode"); dtNewPlan.Columns.Add("FarmerArea"); dtNewPlan.Columns.Add("InspectorID"); dtNewPlan.Columns.Add("InspectorName"); dtNewPlan.Columns.Add("PlanDate"); dtNewPlan.Columns.Add("VisitedDate"); dtNewPlan.Columns.Add("InspectionID"); List <DateTime> dates = GetDates(year, startDate, endDate); DataTable dtHolidays = InspectionPlan_DL.Holidays(year, startDate, endDate); foreach (DataRow item in dtHolidays.Rows) { string stDate = Convert.ToString(item["HolidayDate"]); if (stDate.Contains("/")) { string[] keys = stDate.Split('/'); DateTime hdate = new DateTime(Convert.ToInt32(keys[2]), Convert.ToInt32(keys[0]), Convert.ToInt32(keys[1])); if (hdate.DayOfWeek != DayOfWeek.Sunday && dates.Contains(hdate)) { dates.Remove(new DateTime(Convert.ToInt32(keys[2]), Convert.ToInt32(keys[0]), Convert.ToInt32(keys[1]))); } } } dates = dates.OrderBy(m => m).ToList(); DataTable farmervillages = UnitInformation_DL.FarmersVillageList(); int c = farmervillages.Rows.Count; int mod = Convert.ToInt32(dates.Count / c); int l = Convert.ToInt32(dates.Count % c); List <MudarVillage> villages = new List <MudarVillage>(); foreach (DataRow item in farmervillages.Rows) { MudarVillage village = new MudarVillage(); village.VillageName = Convert.ToString(item["City_Village"]); village.loopCount = mod; villages.Add(village); } for (int i = 0; i < l; i++) { villages[i].loopCount += 1; } DataTable EmployeeTable = BranchsRolesEmployees_DL.GetEmployeBasedonRoleID(role); List <MudarEmployee> emps = new List <MudarEmployee>(); foreach (DataRow item in EmployeeTable.Rows) { MudarEmployee emp = new MudarEmployee(); emp.EmployeeID = new Guid(Convert.ToString(item["EmployeeId"])); emp.EmployeeName = Convert.ToString(item["EmployeeFristName"]); emps.Add(emp); } bool first = false; int h = 0; int village2 = 0; Random random = new Random(); for (int wd = 0; wd < dates.Count; wd++) { for (int vil = h; vil < 2; vil++) { string village = string.Empty; int getID = random.Next(0, farmervillages.Rows.Count); village = farmervillages.Rows[getID]["City_Village"].ToString(); DataTable dtFarmer = Farmer_DL.GetFarmerlistVillagewise(village); for (int r = 0; r < dtNewPlan.Rows.Count; r++) { string farmersid = string.Empty; DataTable newdt = new DataTable(); farmersid = dtNewPlan.Rows[r]["FarmerID"].ToString(); for (int fv = 0; fv < dtFarmer.Rows.Count; fv++) { if (dtNewPlan.Rows[r]["FarmerID"].ToString() == dtFarmer.Rows[fv]["FarmerID"].ToString()) { } } } int p = (Convert.ToInt32(dtFarmer.Rows.Count.ToString()) / mod); for (int f = 0; f < p; f++) { DataRow newrow = dtNewPlan.NewRow(); newrow["InspectionID"] = "0"; newrow["FarmerID"] = dtFarmer.Rows[f]["FarmerID"]; newrow["FarmerName"] = dtFarmer.Rows[f]["FirstName"]; newrow["FarmerCode"] = dtFarmer.Rows[f]["FarmerCode"]; newrow["FarmerArea"] = dtFarmer.Rows[f]["City_Village"]; if (first == false) { newrow["InspectorID"] = emps[0].EmployeeID; newrow["InspectorName"] = emps[0].EmployeeName; //first = true; } else { newrow["InspectorID"] = emps[1].EmployeeID; newrow["InspectorName"] = emps[1].EmployeeName; //first = false; } newrow["PlanDate"] = dates[wd].ToShortDateString(); newrow["VisitedDate"] = dates[wd].ToShortDateString(); dtNewPlan.Rows.Add(newrow); } first = true; village2 = village2 + 1; h++; if (village2 == 2) { //wd = wd + 1; village2 = 0; first = false; h = 0; break; } } } return(dtNewPlan); }