public AddEditCarrierRepairForm(AutoschoolDataSet.CarriersRepairsDataTable carriersRepairsDataTable, AutoschoolDataSet.ServiceMastersDataTable serviceMastersDataTable, AutoschoolDataSet.CarriersDataTable carriersDataTable, DataRow row) { InitializeComponent(); this.carriersRepairsDataTable = carriersRepairsDataTable; this.serviceMastersDataTable = serviceMastersDataTable; this.carriersDataTable = carriersDataTable; dataRow = row; }
public AddRepairFromFormCarriersForm(AutoschoolDataSet.CarriersRepairsDataTable carriersRepairsDataTable, AutoschoolDataSet.ServiceMastersDataTable serviceMastersDataTable, AutoschoolDataSet.CarriersDataTable carriersDataTable, DataRow CarrierRow) { InitializeComponent(); this.carriersRepairsDataTable = carriersRepairsDataTable; this.serviceMastersDataTable = serviceMastersDataTable; this.carriersDataTable = carriersDataTable; this.CarrierRow = CarrierRow; }
private void Get_button_Click(object sender, EventArgs e) { DGVLoad = false; CarriersToReplacement_dataGridView.Rows.Clear(); DateTime BeginDate = Convert.ToDateTime(DateBegin_dateTimePicker.Text).Date; DateTime EndDate = Convert.ToDateTime(DateEnd_dateTimePicker.Text).Date; // отбираем CarriersUses с ремонтируемыми ТС DataTable CarriersUsesWithRepairingCarriers = BusinessLogic.ReadCarriersUsesWithRepairingCarriers(BeginDate, EndDate).Tables["CarrierUsesWithRepairingCarriers"]; //AutoschoolDataSet.CarriersRepairsDataTable CarriersRepairsDT = BusinessLogic.ReadCarriersRepairsByBeginEndDates(BeginDate, EndDate).CarriersRepairs; for (int i = 0; i < CarriersUsesWithRepairingCarriers.Rows.Count; i++) { int CarrierUseID = Convert.ToInt32(CarriersUsesWithRepairingCarriers.Rows[i]["CarrierUseID"].ToString()); DateTime BeginRepair = Convert.ToDateTime(CarriersUsesWithRepairingCarriers.Rows[i]["BeginDate"].ToString()).Date; DateTime EndRepair = Convert.ToDateTime(CarriersUsesWithRepairingCarriers.Rows[i]["EndDate"].ToString()).Date; DateTime TempBeginDate = BeginRepair; bool NeedForReplacement = true; //bool NeedAutoIncr = true; //DateTime NFRBeginDate = BeginRepair; //DateTime NFREndDate = EndRepair; DateTime[] BeginsNewRepl = new DateTime[0]; DateTime[] EndsNewRepl = new DateTime[0]; string[] Reason = new string[0]; int[] ReplacementID = new int[0]; bool NowIsNFRDate = false; while (TempBeginDate <= (EndRepair <= EndDate? EndRepair : EndDate)) { // проверяем, есть ли во время ремонта занятия AutoschoolDataSet.PracticeLessonsDataTable PracticeLessonsDT = BusinessLogic.ReadPracticeLessonsByCarrierUseID_AND_DatesBeginEnd(CarrierUseID, TempBeginDate, (EndRepair <= EndDate ? EndRepair : EndDate)).PracticeLessons; // если нет занятий, но не рассматриваем этот период if (PracticeLessonsDT.Rows.Count == 0) { break; } // в дату TempBeginDate у CarriersUses отбираем замены AutoschoolDataSet.ReplacementsCarriersDataTable ReplacementsCarriersDT = BusinessLogic.ReadReplacementsCarriersByBeginDateANDCarrierUseID(TempBeginDate, CarrierUseID).ReplacementsCarriers; for (int j = 0; j < ReplacementsCarriersDT.Rows.Count; j++) { DateTime EndDateInRow = Convert.ToDateTime(ReplacementsCarriersDT.Rows[j]["DateEndReplacement"].ToString()).Date; // проверяем, не находится ли в ремонте и заменяющее ТС во время замены AutoschoolDataSet.CarriersRepairsDataTable ReplacementInRepairDT = BusinessLogic.ReadByCarrierID_AND_CrossInBeginEndDates( Convert.ToInt32(ReplacementsCarriersDT.Rows[j]["CarrierReplacement"].ToString()), TempBeginDate, EndDateInRow).CarriersRepairs; // если да if (ReplacementInRepairDT.Rows.Count > 0) { // определяем периоды, когда заменяющее ТС в ремонте for (int k = 0; k < ReplacementInRepairDT.Rows.Count; k++) { // фиксируем начало периода отсутствия замены Array.Resize(ref BeginsNewRepl, BeginsNewRepl.Length + 1); if (Convert.ToDateTime(ReplacementInRepairDT.Rows[k]["BeginDate"]).Date > TempBeginDate) { BeginsNewRepl[BeginsNewRepl.Length - 1] = Convert.ToDateTime(ReplacementInRepairDT.Rows[k]["BeginDate"]).Date; } else { BeginsNewRepl[BeginsNewRepl.Length - 1] = TempBeginDate; } // фиксируем причину Array.Resize(ref Reason, Reason.Length + 1); Reason[Reason.Length - 1] = "И основное ТС, и его замена находятся в ремонте"; // фиксируем ID ReplacementCarrier Array.Resize(ref ReplacementID, ReplacementID.Length + 1); ReplacementID[ReplacementID.Length - 1] = Convert.ToInt32(ReplacementsCarriersDT.Rows[j]["ID"].ToString()); // фиксируем окончание этого периода Array.Resize(ref EndsNewRepl, EndsNewRepl.Length + 1); if (Convert.ToDateTime(ReplacementInRepairDT.Rows[k]["EndDate"]).Date > EndDateInRow) { EndsNewRepl[EndsNewRepl.Length - 1] = EndDateInRow; } else { EndsNewRepl[EndsNewRepl.Length - 1] = Convert.ToDateTime(ReplacementInRepairDT.Rows[k]["EndDate"]).Date; } } } // если до этого был период отсутствия замены if (NowIsNFRDate) { // фиксируем окончание этого периода Array.Resize(ref EndsNewRepl, EndsNewRepl.Length + 1); EndsNewRepl[EndsNewRepl.Length - 1] = TempBeginDate.AddDays(-1); NowIsNFRDate = false; } if (EndDateInRow >= (EndRepair <= EndDate ? EndRepair : EndDate)) { // замена уже есть NeedForReplacement = false; break; } else { TempBeginDate = EndDateInRow; } } // если замены у CarrierUse с ремонтируемым ТС нет и период отсутствия замены только начался if (ReplacementsCarriersDT.Rows.Count == 0 && !NowIsNFRDate) { // фиксируем начало периода отсутствия замены Array.Resize(ref BeginsNewRepl, BeginsNewRepl.Length + 1); BeginsNewRepl[BeginsNewRepl.Length - 1] = TempBeginDate; // фиксируем причину Array.Resize(ref Reason, Reason.Length + 1); Reason[Reason.Length - 1] = "Нет замены у основного ТС"; NowIsNFRDate = true; // фиксируем ID ReplacementCarrier Array.Resize(ref ReplacementID, ReplacementID.Length + 1); ReplacementID[ReplacementID.Length - 1] = -1; } // если замена уже есть - заканчиваем рассмотрение этой CarrierUse if (!NeedForReplacement) { break; } // иначе рассматриваем следующий день else { TempBeginDate = TempBeginDate.AddDays(1); } } // если периодов отсутствия замены не было - переходим к следующей CarrierUse if (BeginsNewRepl.Length == 0) { continue; } // выводим все периоды отсутствия замены for (int j = 0; j < BeginsNewRepl.Length; j++) { if (j < EndsNewRepl.Length) { CarriersToReplacement_dataGridView.Rows.Add( CarriersUsesWithRepairingCarriers.Rows[i]["CarrierID"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["Brand"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["Model"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["StateNumber"].ToString(), BeginsNewRepl[j].Date.ToShortDateString(), EndsNewRepl[j].Date.ToShortDateString(), CarriersUsesWithRepairingCarriers.Rows[i]["InstructorID"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["InstructorName"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["CarrierUseID"].ToString(), Reason[j], ReplacementID[j] ); } else { CarriersToReplacement_dataGridView.Rows.Add( CarriersUsesWithRepairingCarriers.Rows[i]["CarrierID"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["Brand"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["Model"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["StateNumber"].ToString(), BeginsNewRepl[j].Date.ToShortDateString(), (EndRepair <= EndDate ? EndRepair : EndDate).Date.ToShortDateString(), CarriersUsesWithRepairingCarriers.Rows[i]["InstructorID"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["InstructorName"].ToString(), CarriersUsesWithRepairingCarriers.Rows[i]["CarrierUseID"].ToString(), Reason[j], ReplacementID[j] ); } } } DGVLoad = true; CarriersToReplacement_dataGridView_SelectionChanged(sender, e); }