public void Export() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var aircraftFlightCore = new AircraftFlightCore(env, env.Loader, env.NewLoader, null, null, componentCore, null, aircraftCore); var calc = new Calculator(env, componentCore, aircraftFlightCore, aircraftCore); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2316); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); int q = 0; var ds = ExcelToDataTableUsingExcelDataReader(@"D:\MPD.xlsx"); foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { var mpd = mpds.FirstOrDefault(i => i.TaskNumberCheck == row[0].ToString()); if (mpd == null) { continue; } var record = new DirectiveRecord { Parent = mpd, ParentId = mpd.ItemId, OnLifelength = new Lifelength(), }; if (int.TryParse(row[2].ToString(), out var hour)) { record.OnLifelength.Hours = hour; } if (int.TryParse(row[3].ToString(), out var cycle)) { record.OnLifelength.Cycles = cycle; } if (DateTime.TryParse(row[4].ToString(), out var date)) { record.RecordDate = date; } var res = calc.GetFlightLifelengthOnStartOfDay(aircraft, date); if ((hour > 0 || cycle > 0) && date != DateTime.MinValue) { record.OnLifelength.Days = res.Days; //Trace.WriteLine(row[0].ToString()); env.NewKeeper.Save(record); } } } }
public void Test() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); aircraftCore.LoadAllAircrafts(); var aircraftFrom = aircraftCore.GetAircraftById(2336); //var aircraftTo = aircraftCore.GetAircraftById(2347); var mpdsFrom = mpdCore.GetMaintenanceDirectives(aircraftFrom); //var mpdsTo = mpdCore.GetMaintenanceDirectives(aircraftTo); foreach (var maintenanceDirective in mpdsFrom.Where(i => i.IsOperatorTask)) { maintenanceDirective.IsOperatorTask = false; env.Keeper.Save(maintenanceDirective); Trace.WriteLine($"{maintenanceDirective.TaskNumberCheck}"); //var find = mpdsTo.FirstOrDefault(i => i.TaskNumberCheck.TrimEnd() == maintenanceDirective.TaskNumberCheck.TrimEnd()); //if (find == null) // continue; //Trace.WriteLine($"{maintenanceDirective.TaskNumberCheck} - {find?.TaskNumberCheck ?? "N/A"}"); //Trace.WriteLine(maintenanceDirective.Kits.Count); //Trace.WriteLine("------------------------"); //find.KitsApplicable = true; //env.Keeper.Save(find); //foreach (var accessoryRequired in find.Kits) //{ // env.Keeper.Delete(accessoryRequired); //} //foreach (var rec in maintenanceDirective.Kits) //{ // var newRec = rec.GetCopyUnsaved(); // newRec.ParentId = find.ItemId; // env.Keeper.Save(newRec); //} } }
public void ImportMaintenanceDirectives757TotalFinish() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var ds = ExcelToDataTableUsingExcelDataReader(@"D:\111\737\task.xlsx"); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2335); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { if (string.IsNullOrEmpty(row[0].ToString())) { continue; } var taskCards = row[2].ToString().Split(new string[] { "\n" }, StringSplitOptions.None); foreach (var card in taskCards) { var finds = mpds .Where(i => i.TaskCardNumber.ToLower().Trim().Equals(card.ToLower().Trim())) .OrderBy(i => i.PerformanceRecords.Count > 0) .ToList(); foreach (var mpd in finds) { mpd.TaskNumberCheck = row[0].ToString(); env.NewKeeper.Save(mpd); } } } } }
public void ImportTaskCard() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, null); var itemRelationCore = new ItemsRelationsDataAccess(env); var maintenanceCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var aircraft = env.NewLoader.GetObject <AircraftDTO, Aircraft>(new Filter("ItemId", 2340)); var mpdList = maintenanceCore.GetMaintenanceDirectives(aircraft); var d = new DirectoryInfo(@"D:\MPD\All Task Cards for UP-B6703"); var files = d.GetFiles(); foreach (var mpd in mpdList) { var file = files.FirstOrDefault(f => f.Name.Replace(".pdf", "") == mpd.TaskCardNumber); if (file != null) { var _fileData = UsefulMethods.GetByteArrayFromFile(file.FullName); var attachedFile = new AttachedFile { FileData = _fileData, FileName = file.Name, FileSize = _fileData.Length }; mpd.TaskCardNumberFile = attachedFile; env.NewKeeper.Save(mpd); } else { Trace.WriteLine(mpd.TaskNumberCheck); } } }
public void ImportMaintenanceDirectives757Total() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var ds = ExcelToDataTableUsingExcelDataReader(@"D:\111\737\task.xlsx"); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2335); var bd = componentCore.GetAicraftBaseComponents(aircraft.ItemId, BaseComponentType.Frame.ItemId).FirstOrDefault(); var ata = env.NewLoader.GetObjectListAll <ATAChapterDTO, AtaChapter>(); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { if (string.IsNullOrEmpty(row[0].ToString())) { continue; } MaintenanceDirective find; var finds = mpds .Where(i => i.TaskNumberCheck.ToLower().Trim().Equals(row[0].ToString().ToLower().Trim())) .OrderBy(i => i.PerformanceRecords.Count > 0) .ToList(); //Такой колхоз сделан потому что бывает что mpd две с одинаковым названием var flag = false; find = finds.FirstOrDefault(); MaintenanceDirective mpd; if (find != null) { mpd = find; finds.Remove(find); } else { mpd = new MaintenanceDirective() { ParentBaseComponent = bd, HiddenRemarks = "NEW", }; flag = true; } Setup757Total(mpd, row, ata, flag); var taskCards = row[2].ToString().Split(new string[] { "\n" }, StringSplitOptions.None); var counter = 1; if (taskCards.Count() > 1) { foreach (var taskCard in taskCards) { if (string.IsNullOrEmpty(taskCard)) { continue; } if (counter == 1) { mpd.TaskNumberCheck = $"{row[0]} ({counter})"; mpd.TaskCardNumber = taskCard; env.Keeper.Save(mpd); counter++; } else { var mpdExist = finds.FirstOrDefault(); if (mpdExist != null) { Setup757Total(mpdExist, row, ata, flag); mpdExist.TaskNumberCheck = $"{row[0]} ({counter})"; mpdExist.TaskCardNumber = taskCard; env.Keeper.Save(mpdExist); finds.Remove(mpdExist); } else { var newMpd = mpd.GetCopyUnsaved(); Setup757Total(newMpd, row, ata, flag); newMpd.ParentBaseComponent = bd; newMpd.TaskNumberCheck = $"{row[0]} ({counter})"; newMpd.TaskCardNumber = taskCard; env.Keeper.Save(newMpd); foreach (var record in mpd.PerformanceRecords) { var newRec = record.GetCopyUnsaved(); newRec.ParentId = newMpd.ItemId; env.Keeper.Save(newRec); } } counter++; } } } else { mpd.TaskCardNumber = row[2].ToString(); env.Keeper.Save(mpd); } } } }
public void ImportMaintenanceDirectives757() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var ds = ExcelToDataTableUsingExcelDataReader(@"D:\111\737\zip.xlsx"); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2335); var bd = componentCore.GetAicraftBaseComponents(aircraft.ItemId, BaseComponentType.Frame.ItemId).FirstOrDefault(); var ata = env.NewLoader.GetObjectListAll <ATAChapterDTO, AtaChapter>(); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { if (string.IsNullOrEmpty(row[0].ToString())) { continue; } MaintenanceDirective find = mpds.FirstOrDefault(i => i.TaskNumberCheck.ToLower().Trim().Equals(row[0].ToString().ToLower().Trim())); //Такой колхоз сделан потому что бывает что mpd две с одинаковым названием var flag = false; MaintenanceDirective mpd; if (find != null) { mpd = find; } else { mpd = new MaintenanceDirective() { ParentBaseComponent = bd, HiddenRemarks = "NEW", }; flag = true; } mpd.TaskNumberCheck = row[0].ToString(); mpd.MaintenanceManual = row[1].ToString(); #region SYSTEMS AND POWERPLANT MAINTENA //mpd.Program = MaintenanceDirectiveProgramType.SystemsAndPowerPlants; //mpd.MpdRef = "SYSTEMS AND POWERPLANT MAINTENA"; //if (!string.IsNullOrEmpty(row[2].ToString())) //{ // int res; // if (int.TryParse(row[2].ToString(), out res)) // mpd.Category = MpdCategory.GetItemById(res); //} //mpd.Zone = row[6].ToString().Replace("\n", " "); //mpd.Access = row[7].ToString().Replace("\n", " "); //if (!string.IsNullOrEmpty(row[10].ToString())) //{ // double mhr; // if (double.TryParse(row[10].ToString(), out mhr)) // mpd.ManHours = mhr; //} //var apl = row[8].ToString(); //if (apl.Contains("ALL")) //{ // mpd.IsApplicability = true; //} //mpd.Description = row[11].ToString(); #endregion #region STRUCTURAL MAINTENANCE REQUIREM //mpd.Program = MaintenanceDirectiveProgramType.StructuresMaintenance; //mpd.MpdRef = "STRUCTURAL MAINTENANCE REQUIREM"; //if (!string.IsNullOrEmpty(row[9].ToString())) //{ // double mhr; // if (double.TryParse(row[9].ToString(), out mhr)) // mpd.ManHours = mhr; //} //if (!string.IsNullOrEmpty(row[2].ToString())) // mpd.ProgramIndicator = MaintenanceDirectiveProgramIndicator.Items // .FirstOrDefault(i => i.ShortName.Contains(row[2].ToString())); //mpd.Zone = row[3].ToString().Replace("\n", " "); //mpd.Access = row[4].ToString().Replace("\n", " "); //var apl = row[7].ToString(); //if (apl.Contains("ALL")) //{ // mpd.IsApplicability = true; //} //mpd.Description = row[10].ToString(); #endregion #region ZONAL INSPECTION PROGRAM //mpd.Program = MaintenanceDirectiveProgramType.ZonalInspection; //mpd.MpdRef = "ZONAL INSPECTION PROGRAM"; //if (!string.IsNullOrEmpty(row[8].ToString())) //{ // double mhr; // if (double.TryParse(row[8].ToString(), out mhr)) // mpd.ManHours = mhr; //} //mpd.Zone = row[2].ToString().Replace("\n", " "); //mpd.Access = row[3].ToString().Replace("\n", " "); //var apl = row[6].ToString(); //if (apl.Contains("ALL")) //{ // mpd.IsApplicability = true; //} //mpd.Description = row[9].ToString(); #endregion if (flag) { mpd.HiddenRemarks = "NEW"; } if (mpd.TaskNumberCheck.Length > 2) { var shortName = mpd.TaskNumberCheck.Substring(0, 2); mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(shortName)); } mpd.MPDTaskNumber = "D626A001"; mpd.IsOperatorTask = false; mpd.MpdRevisionDate = new DateTime(2019, 2, 15); mpd.Threshold.EffectiveDate = new DateTime(2018, 8, 23); mpd.ScheduleRevisionDate = new DateTime(2018, 8, 23); mpd.ScheduleRevisionNum = "0"; mpd.ScheduleRef = "SC-C014-MP"; env.Keeper.Save(mpd); } } }
public void ImportMaintenanceDirectives37XX() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var ds = ExcelToDataTableUsingExcelDataReader(@"D:\123\mpd.xlsx"); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2334); var bd = componentCore.GetAicraftBaseComponents(aircraft.ItemId, BaseComponentType.Frame.ItemId).FirstOrDefault(); var ata = env.NewLoader.GetObjectListAll <ATAChapterDTO, AtaChapter>(); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); foreach (DataTable table in ds.Tables) { foreach (var row in table.Rows.OfType <DataRow>().GroupBy(i => i[1])) //foreach (DataRow row in table.Rows) { #region Добавление Mpd TaskNumber(Appendix B - Old to New XRef) //int counter = 1; //var find = mpds.FirstOrDefault(i => i.TaskNumberCheck.ToLower().Trim().Equals(row.Key.ToString().ToLower())); //if (find != null) //{ // foreach (var dataRow in row) // { // if (counter == 1) // { // if (row.Count() > 1) // find.TaskNumberCheck = $"{row.Key} ({counter})"; // find.MpdOldTaskCard = dataRow[2].ToString(); // find.TaskCardNumber = dataRow[3].ToString(); // env.Keeper.Save(find); // counter++; // } // else // { // MaintenanceDirective mpd = find.GetCopyUnsaved(); // mpd.ParentBaseComponent = bd; // mpd.TaskNumberCheck = $"{row.Key} ({counter})"; // mpd.MpdOldTaskCard = dataRow[2].ToString(); // mpd.TaskCardNumber = dataRow[3].ToString(); // env.Keeper.Save(mpd); // counter++; // } // } //} #endregion //var find = mpds.FirstOrDefault(i => //i.TaskNumberCheck.ToLower().Trim().Equals(row[0].ToString().ToLower())); //MaintenanceDirective mpd; //if (find != null) // mpd = find; //else // mpd = new MaintenanceDirective() // { // ParentBaseComponent = bd, // HiddenRemarks = "NEW", // }; #region Основное добавление(Appendix G - ISIP) //mpd.Program = MaintenanceDirectiveProgramType.ISIP; //mpd.MpdRef = "Appendix G - ISIP"; //mpd.TaskNumberCheck = row[0].ToString(); //mpd.Zone = row[4].ToString(); //mpd.Access = row[3].ToString(); //mpd.Description = row[8].ToString(); //if (mpd.TaskNumberCheck.Length > 2) //{ // var shortName = mpd.TaskNumberCheck.Substring(1, 2); // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(shortName)); //} //mpd.MPDTaskNumber = "D6-38278"; //mpd.IsOperatorTask = false; //mpd.MpdRevisionDate = new DateTime(2018, 9, 25); //mpd.Threshold.EffectiveDate = new DateTime(2018, 10, 1); //mpd.ScheduleRevisionDate = new DateTime(2018, 10, 1); //mpd.ScheduleRevisionNum = "1"; //mpd.ScheduleRef = "SC-C011-MP"; #endregion #region Основное добавление(Section 6 Systems и Section 7 Structures) //mpd.Program = MaintenanceDirectiveProgramType.SystemsMaintenance; //mpd.MpdRef = "Section 6 Systems"; //mpd.Program = MaintenanceDirectiveProgramType.StructuralInspection; //mpd.MpdRef = "Section 7 Structures"; //mpd.TaskNumberCheck = row[0].ToString(); //mpd.MRB = row[1].ToString(); //mpd.Zone = row[4].ToString(); //mpd.Access = row[3].ToString(); //mpd.Description = row[8].ToString(); //var apl = row[5].ToString(); //if (apl.Contains("ALL")) //{ // mpd.IsApplicability = true; //} //else if (apl == "(1)") //{ // mpd.IsApplicability = true; // mpd.Applicability = apl; //} //if (mpd.TaskNumberCheck.Length > 2) //{ // var shortName = mpd.TaskNumberCheck.Substring(1, 2); // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(shortName)); //} //mpd.MPDTaskNumber = "D6-38278"; //mpd.IsOperatorTask = false; //mpd.MpdRevisionDate = new DateTime(2018, 9, 25); //mpd.Threshold.EffectiveDate = new DateTime(2018, 10, 1); //mpd.ScheduleRevisionDate = new DateTime(2018, 10, 1); //mpd.ScheduleRevisionNum = "1"; //mpd.ScheduleRef = "SC-C011-MP"; #endregion //env.Keeper.Save(mpd); } } }
public void Test() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, null); var itemRelationCore = new ItemsRelationsDataAccess(env); var maintenanceCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var aircraft = env.NewLoader.GetObject <AircraftDTO, Aircraft>(new Filter("ItemId", 2348)); var mpdList = maintenanceCore.GetMaintenanceDirectives(aircraft); var bd = componentCore.GetAicraftBaseComponents(2348, BaseComponentType.Frame.ItemId).FirstOrDefault(); var d = new DirectoryInfo(@"H:\TaskCard\ALL for Yevhenij"); var files = d.GetFiles(); var ds = ExcelToDataTableUsingExcelDataReader(@"H:\Card.xlsx"); var dict = new Dictionary <string, List <DataRow> >(); foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { if (!dict.ContainsKey(row[1].ToString())) { dict.Add(row[1].ToString(), new List <DataRow> { row }); } else { dict[row[1].ToString()].Add(row); } } } foreach (var mpd in mpdList) { int counter = 1; var description = mpd.Description; if (mpd.Program.ItemId == MaintenanceDirectiveProgramType.StructuresMaintenance.ItemId || mpd.Program.ItemId == MaintenanceDirectiveProgramType.SystemsAndPowerPlants.ItemId || mpd.Program.ItemId == MaintenanceDirectiveProgramType.ZonalInspection.ItemId) { if (!dict.ContainsKey(mpd.TaskNumberCheck)) { Trace.WriteLine(mpd.TaskNumberCheck); continue; } foreach (var row in dict[mpd.TaskNumberCheck]) { if (counter == 1) { mpd.TaskCardNumber = row[0].ToString(); var file = files.FirstOrDefault(f => f.Name.Replace(".pdf", "") == mpd.TaskCardNumber); if (file != null) { var _fileData = UsefulMethods.GetByteArrayFromFile(file.FullName); var attachedFile = new AttachedFile { FileData = _fileData, FileName = file.Name, FileSize = _fileData.Length }; mpd.Description += $" / TaskCard : {row[2]}"; mpd.TaskCardNumberFile = attachedFile; } if (dict[mpd.TaskNumberCheck].Count > 1) { mpd.TaskNumberCheck += $" ({counter})"; } env.NewKeeper.Save(mpd); counter++; } else { var newMpd = mpd.GetCopyUnsaved(); newMpd.TaskCardNumber = row[0].ToString(); newMpd.TaskCardNumberFile = null; var file = files.FirstOrDefault(f => f.Name.Replace(".pdf", "") == newMpd.TaskCardNumber); if (file != null) { var _fileData = UsefulMethods.GetByteArrayFromFile(file.FullName); var attachedFile = new AttachedFile { FileData = _fileData, FileName = file.Name, FileSize = _fileData.Length }; newMpd.TaskCardNumberFile = attachedFile; newMpd.Description = $"{description} / TaskCard : {row[2]}"; } newMpd.TaskNumberCheck = $"{row[1]} ({counter})"; newMpd.ParentBaseComponent = bd; env.NewKeeper.Save(newMpd); counter++; } } } } }
public void CopyAircraft() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var directiveCore = new DirectiveCore(env.NewKeeper, env.NewLoader, env.Keeper, env.Loader, itemRelationCore); var maintenanceCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var newBaseComponent = new List <BaseComponent>(); var newComponents = new List <Entities.General.Accessory.Component>(); var directives = new List <Directive>(); var maintenanceDirective = new List <MaintenanceDirective>(); //Грузим ВС, делаем с него копию и сохраняем var aircrafts = env.NewLoader.GetObject <AircraftDTO, Aircraft>(new Filter("ItemId", 2346), true); var newAircraft = aircrafts.GetCopyUnsaved(); //newAircraft.RegistrationNumber += "- COPY"; env.NewKeeper.Save(newAircraft); //Грузим базовые агрегаты ВС, делаем с копии и сохраняем var baseComponents = new BaseComponentCollection(componentCore.GetAicraftBaseComponents(aircrafts.ItemId)); LoadDocuments(baseComponents, env); foreach (var baseComponent in baseComponents) { var newComponent = (BaseComponent)baseComponent.GetCopyUnsaved(); newComponent.ParentAircraftId = newAircraft.ItemId; env.NewKeeper.Save(newComponent); newBaseComponent.Add(newComponent); foreach (var transferRecord in baseComponent.TransferRecords) { var newTransferRecord = transferRecord.GetCopyUnsaved(); if (newTransferRecord.DestinationObjectType == SmartCoreType.Aircraft) { newTransferRecord.DestinationObjectId = newAircraft.ItemId; } newTransferRecord.ParentId = newComponent.ItemId; env.NewKeeper.Save(newTransferRecord); } foreach (var componentDirective in baseComponent.ComponentDirectives) { var newcomponentDirective = componentDirective.GetCopyUnsaved(); newcomponentDirective.ComponentId = newComponent.ItemId; env.NewKeeper.Save(newcomponentDirective); } } //Грузим агрегаты ВС, делаем с копии и сохраняем var components = componentCore.GetComponents(aircrafts.ItemId); foreach (var component in components) { var newComponent = component.GetCopyUnsaved(); newComponent.ParentAircraftId = newAircraft.ItemId; env.NewKeeper.Save(newComponent); newComponents.Add(newComponent); foreach (var transferRecord in component.TransferRecords) { var newTransferRecord = transferRecord.GetCopyUnsaved(); if (newTransferRecord.DestinationObjectType == SmartCoreType.BaseComponent) { newTransferRecord.DestinationObjectId = newBaseComponent.FirstOrDefault(b => b.SerialNumber == ((BaseComponent)newTransferRecord.DestinationObject).SerialNumber).ItemId; } newTransferRecord.ParentId = newComponent.ItemId; env.NewKeeper.Save(newTransferRecord); } foreach (var componentDirective in component.ComponentDirectives) { var newcomponentDirective = componentDirective.GetCopyUnsaved(); newcomponentDirective.ComponentId = newComponent.ItemId; env.NewKeeper.Save(newcomponentDirective); } } //Грузим директивы ВС, делаем с копии и сохраняем directives.Clear(); directives.AddRange(directiveCore.GetDirectives(aircrafts, DirectiveType.All)); foreach (var directive in directives) { var newDirective = directive.GetCopyUnsaved(); newDirective.ParentBaseComponent = newBaseComponent.FirstOrDefault(b => b.SerialNumber == newDirective.ParentBaseComponent.SerialNumber); newDirective.PerformanceRecords.Clear(); newDirective.CategoriesRecords.Clear(); env.NewKeeper.Save(newDirective); } //Грузим MPD ВС, делаем с копии и сохраняем maintenanceDirective.Clear(); maintenanceDirective.AddRange(maintenanceCore.GetMaintenanceDirectives(aircrafts)); foreach (var directive in maintenanceDirective) { var newDirective = directive.GetCopyUnsaved(); if (directive.ParentBaseComponent != null) { newDirective.ParentBaseComponent = newBaseComponent.FirstOrDefault(b => b.SerialNumber == directive.ParentBaseComponent.SerialNumber); } newDirective.PerformanceRecords.Clear(); newDirective.CategoriesRecords.Clear(); env.NewKeeper.Save(newDirective); } }
public void ImportMaintenanceDirectives() { var env = GetEnviroment(); var aircraftCore = new AircraftsCore(env.Loader, env.NewKeeper, env.NewLoader); var itemRelationCore = new ItemsRelationsDataAccess(env); var componentCore = new ComponentCore(env, env.Loader, env.NewLoader, env.NewKeeper, aircraftCore, itemRelationCore); var mpdCore = new MaintenanceCore(env, env.NewLoader, env.NewKeeper, itemRelationCore, aircraftCore); var ds = ExcelToDataTableUsingExcelDataReader(@"H:\SCIAWL.xlsx"); var bd = componentCore.GetAicraftBaseComponents(2348, BaseComponentType.Frame.ItemId).FirstOrDefault(); var ata = env.NewLoader.GetObjectListAll <ATAChapterDTO, AtaChapter>(); aircraftCore.LoadAllAircrafts(); var aircraft = aircraftCore.GetAircraftById(2348); var mpds = mpdCore.GetMaintenanceDirectives(aircraft); MaintenanceDirective savedMpd = null; foreach (DataTable table in ds.Tables) { foreach (DataRow row in table.Rows) { if (string.IsNullOrEmpty(row[0].ToString())) { continue; } var find = mpds.FirstOrDefault(i => i.TaskNumberCheck.ToLower().Equals(row[0].ToString().ToLower())); if (find != null) { if (find.MaintenanceManual != row[1].ToString()) { find.HiddenRemarks += $"| AMM |"; find.MaintenanceManual = row[1].ToString(); } find.Program = MaintenanceDirectiveProgramType.SpecialCompliance; //if (!string.IsNullOrEmpty(row[3].ToString())) //{ // var value = row[3].ToString(); // if (value.Contains("SYSTEMS AND POWERPLANT")) // { // if (find.Program.ItemId != MaintenanceDirectiveProgramType.SystemsAndPowerPlants.ItemId) // { // find.HiddenRemarks += $"| Program |"; // find.Program = MaintenanceDirectiveProgramType.SystemsAndPowerPlants; // } // } // else if (value.Contains("STRUCTURAL")) // { // if (find.Program.ItemId != MaintenanceDirectiveProgramType.StructuresMaintenance.ItemId) // { // find.HiddenRemarks += $"| Program |"; // find.Program = MaintenanceDirectiveProgramType.StructuresMaintenance; // } // } // else if(value.Contains("ZONAL")) // { // if (find.Program.ItemId != MaintenanceDirectiveProgramType.ZonalInspection.ItemId) // { // find.HiddenRemarks += $"| Program |"; // find.Program = MaintenanceDirectiveProgramType.ZonalInspection; // } // } //} if (!string.IsNullOrEmpty(row[4].ToString())) { var category = MpdCategory.GetItemById(Convert.ToInt32(row[4].ToString()[0])); if (category != null && find.Category.ItemId != category.ItemId) { find.HiddenRemarks += $"| Category |"; find.Category = category; } } if (!string.IsNullOrEmpty(row[5].ToString())) { var programIndicator = MaintenanceDirectiveProgramIndicator.Items.FirstOrDefault(i => i.ShortName.Contains(row[5].ToString())); if (programIndicator != null && find.ProgramIndicator.ItemId != programIndicator.ItemId) { find.HiddenRemarks += $"| ProgramIndicator |"; find.ProgramIndicator = programIndicator; } } if (!string.IsNullOrEmpty(row[6].ToString())) { var workType = MaintenanceDirectiveTaskType.Items.FirstOrDefault(i => i.ShortName.Contains(row[6].ToString())); if (workType != null && find.WorkType.ItemId != workType.ItemId) { find.HiddenRemarks += $"| WorkType |"; find.WorkType = workType; } } if (find.Zone != row[22].ToString()) { find.HiddenRemarks += $"| Zone |"; find.Zone = row[22].ToString().Replace("\n", " "); } if (find.Access != row[23].ToString()) { find.HiddenRemarks += $"| Access |"; find.Access = row[23].ToString().Replace("\n", " "); } if (find.Applicability != row[24].ToString()) { find.HiddenRemarks += $"| Applicability |"; find.Applicability = row[24].ToString(); } if (!string.IsNullOrEmpty(row[26].ToString())) { var value = Convert.ToDouble(row[26].ToString()); if (find.ManHours != value) { find.HiddenRemarks += $"| ManHours |"; find.ManHours = value; } } if (find.Description != row[27].ToString()) { find.HiddenRemarks += $"| Description |"; find.Description = row[27].ToString(); } if (find.Description != row[2].ToString()) { find.HiddenRemarks += $"| Remarks |"; find.Remarks = row[2].ToString(); } if (find.Description != row[28].ToString()) { find.HiddenRemarks += $"| Doc No |"; find.MPDTaskNumber = row[28].ToString(); } if (find.Description != row[28].ToString()) { find.HiddenRemarks += $"| Workarea |"; find.Workarea = row[29].ToString(); } if (!string.IsNullOrEmpty(row[7].ToString()) && row[7].ToString() != "N/A") { var value = row[7].ToString(); find.Threshold.FirstPerformanceSinceNew.Hours = int.Parse(value); } if (!string.IsNullOrEmpty(row[8].ToString()) && row[8].ToString() != "N/A") { var value = row[8].ToString(); find.Threshold.FirstPerformanceSinceNew.Cycles = int.Parse(value); } if (!string.IsNullOrEmpty(row[9].ToString()) && row[9].ToString() != "N/A") { find.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Days; var value = row[9].ToString(); find.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[10].ToString()) && row[10].ToString() != "N/A") { find.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Months; var value = row[10].ToString(); find.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[11].ToString()) && row[11].ToString() != "N/A") { find.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Years; var value = row[11].ToString(); find.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } /////////////////////////////////////////////////////////////////////////////// if (!string.IsNullOrEmpty(row[15].ToString()) && row[15].ToString() != "N/A") { var value = row[15].ToString(); find.Threshold.RepeatInterval.Hours = int.Parse(value); } if (!string.IsNullOrEmpty(row[16].ToString()) && row[16].ToString() != "N/A") { var value = row[16].ToString(); find.Threshold.RepeatInterval.Cycles = int.Parse(value); } if (!string.IsNullOrEmpty(row[17].ToString()) && row[17].ToString() != "N/A") { find.Threshold.RepeatInterval.CalendarType = CalendarTypes.Days; var value = row[17].ToString(); find.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[18].ToString()) && row[18].ToString() != "N/A") { find.Threshold.RepeatInterval.CalendarType = CalendarTypes.Months; var value = row[18].ToString(); find.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[19].ToString()) && row[19].ToString() != "N/A") { find.Threshold.RepeatInterval.CalendarType = CalendarTypes.Years; var value = row[19].ToString(); find.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } env.NewKeeper.Save(find); } else { var newMpd = new MaintenanceDirective { ParentBaseComponent = bd, HiddenRemarks = "NEW", }; newMpd.TaskNumberCheck = row[0].ToString(); newMpd.MaintenanceManual = row[1].ToString(); newMpd.Program = MaintenanceDirectiveProgramType.SpecialCompliance; //if (!string.IsNullOrEmpty(row[3].ToString())) //{ // var value = row[3].ToString(); // if(value.Contains("SYSTEMS AND POWERPLANT")) // newMpd.Program = MaintenanceDirectiveProgramType.SystemsAndPowerPlants; // else if (value.Contains("STRUCTURAL")) // newMpd.Program = MaintenanceDirectiveProgramType.StructuresMaintenance; // else if (value.Contains("ZONAL")) // newMpd.Program = MaintenanceDirectiveProgramType.ZonalInspection; //} if (!string.IsNullOrEmpty(row[4].ToString())) { newMpd.Category = MpdCategory.GetItemById(Convert.ToInt32(row[4].ToString())); } if (!string.IsNullOrEmpty(row[5].ToString())) { newMpd.ProgramIndicator = MaintenanceDirectiveProgramIndicator.Items.FirstOrDefault(i => i.ShortName.Contains(row[5].ToString())); } if (!string.IsNullOrEmpty(row[6].ToString())) { newMpd.WorkType = MaintenanceDirectiveTaskType.Items.FirstOrDefault(i => i.ShortName.Contains(row[6].ToString())); } newMpd.Zone = row[22].ToString().Replace("\n", " "); newMpd.Access = row[23].ToString().Replace("\n", " "); newMpd.Applicability = row[24].ToString(); if (!string.IsNullOrEmpty(row[26].ToString())) { newMpd.ManHours = Convert.ToDouble(row[26].ToString()); } newMpd.Remarks = row[2].ToString(); newMpd.Description = row[27].ToString(); newMpd.MPDTaskNumber = row[28].ToString(); newMpd.Workarea = row[29].ToString(); if (newMpd.TaskNumberCheck.Length > 2) { newMpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(newMpd.TaskNumberCheck.Substring(0, 2))); } newMpd.Threshold = new MaintenanceDirectiveThreshold(); /////////////////////////////////////////////////////////////////////////////// if (!string.IsNullOrEmpty(row[7].ToString()) && row[7].ToString() != "N/A") { var value = row[7].ToString(); newMpd.Threshold.FirstPerformanceSinceNew.Hours = int.Parse(value); } if (!string.IsNullOrEmpty(row[8].ToString()) && row[8].ToString() != "N/A") { var value = row[8].ToString(); newMpd.Threshold.FirstPerformanceSinceNew.Cycles = int.Parse(value); } if (!string.IsNullOrEmpty(row[9].ToString()) && row[9].ToString() != "N/A") { newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Days; var value = row[9].ToString(); newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[10].ToString()) && row[10].ToString() != "N/A") { newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Months; var value = row[10].ToString(); newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[11].ToString()) && row[11].ToString() != "N/A") { newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Years; var value = row[11].ToString(); newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value); } /////////////////////////////////////////////////////////////////////////////// if (!string.IsNullOrEmpty(row[15].ToString()) && row[15].ToString() != "N/A") { var value = row[15].ToString(); newMpd.Threshold.RepeatInterval.Hours = int.Parse(value); } if (!string.IsNullOrEmpty(row[16].ToString()) && row[16].ToString() != "N/A") { var value = row[16].ToString(); newMpd.Threshold.RepeatInterval.Cycles = int.Parse(value); } if (!string.IsNullOrEmpty(row[17].ToString()) && row[17].ToString() != "N/A") { newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Days; var value = row[17].ToString(); newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[18].ToString()) && row[18].ToString() != "N/A") { newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Months; var value = row[18].ToString(); newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } else if (!string.IsNullOrEmpty(row[19].ToString()) && row[19].ToString() != "N/A") { newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Years; var value = row[19].ToString(); newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value); } env.NewKeeper.Save(newMpd); } #region UP-B3 //var newMpd = new MaintenanceDirective(); //newMpd.TaskNumberCheck = row[0].ToString(); //newMpd.Description = row[6].ToString(); //newMpd.Applicability = row[5].ToString(); //newMpd.WorkType = MaintenanceDirectiveTaskType.Items.FirstOrDefault(i => i.ShortName.Contains(row[2].ToString())); //newMpd.MPDTaskNumber = "D626A011-9-03"; //newMpd.ParentBaseComponent = bd; //newMpd.Program = MaintenanceDirectiveProgramType.CertificationMaintenanceRequirement; //newMpd.MpdRevisionDate = new DateTime(2017, 9, 1); //if (newMpd.TaskNumberCheck.Length > 2) // newMpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(newMpd.TaskNumberCheck.Substring(0, 2))); //env.Keeper.Save(newMpd); //env.Keeper.Save(newMpd); //DateTime d = new DateTime(); //if(DateTime.TryParse(row[4].ToString(), out d)) // newMpd.MpdRevisionDate = d; // // //if (newMpd.TaskNumberCheck.Length > 2) //newMpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(newMpd.TaskNumberCheck.Substring(0, 2))); //newMpd.Threshold = new MaintenanceDirectiveThreshold(); //if (!string.IsNullOrEmpty(row[6].ToString())) //{ // newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Days; // var value = row[6].ToString(); // newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //else if (!string.IsNullOrEmpty(row[7].ToString())) //{ // newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Months; // var value = row[7].ToString(); // newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //else if (!string.IsNullOrEmpty(row[8].ToString())) //{ // newMpd.Threshold.FirstPerformanceSinceNew.CalendarType = CalendarTypes.Years; // var value = row[8].ToString(); // newMpd.Threshold.FirstPerformanceSinceNew.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //if (!string.IsNullOrEmpty(row[9].ToString())) //{ // var value = row[9].ToString(); // newMpd.Threshold.FirstPerformanceSinceNew.Days = int.Parse(value.Remove(value.IndexOf(' '))); //} //if (!string.IsNullOrEmpty(row[10].ToString())) //{ // var value = row[10].ToString(); // newMpd.Threshold.FirstPerformanceSinceNew.Cycles = int.Parse(value.Remove(value.IndexOf(' '))); //} //if (!string.IsNullOrEmpty(row[11].ToString())) //{ // newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Days; // var value = row[11].ToString(); // newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //else if (!string.IsNullOrEmpty(row[12].ToString())) //{ // newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Months; // var value = row[12].ToString(); // newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //else if (!string.IsNullOrEmpty(row[13].ToString())) //{ // newMpd.Threshold.RepeatInterval.CalendarType = CalendarTypes.Years; // var value = row[13].ToString(); // newMpd.Threshold.RepeatInterval.CalendarValue = int.Parse(value.Remove(value.IndexOf(' '))); //} //if (!string.IsNullOrEmpty(row[14].ToString())) //{ // var value = row[14].ToString(); // newMpd.Threshold.RepeatInterval.Days = int.Parse(value.Remove(value.IndexOf(' '))); //} //if (!string.IsNullOrEmpty(row[15].ToString())) //{ // var value = row[15].ToString(); // newMpd.Threshold.RepeatInterval.Cycles = int.Parse(value.Remove(value.IndexOf(' '))); //} //env.Keeper.Save(newMpd); #endregion #region UP-B6703 //if (row[0].ToString().Length == 0) //{ // savedMpd.Zone += $" {row[1]}"; // savedMpd.Access += $" {row[4]}"; // savedMpd.Description += $" {row[2]}"; // env.Keeper.Save(savedMpd); //} //else //{ // var mpd = new MaintenanceDirective(); // var taskNumberCheck = row[0].ToString().Split(); // var zone = row[1].ToString().Split(); // var access = row[4].ToString().Split(); // mpd.TaskNumberCheck = string.Join(" ", taskNumberCheck); // mpd.TaskCardNumber = row[0].ToString(); // //mpd.TaskCardNumber = row[5].ToString();//690-694 756-802 // mpd.Zone = string.Join(" ", zone); // mpd.Access = string.Join(" ", access); // mpd.Description = row[2].ToString(); // //mpd.Description = $"{row[5]} {row[2]}";//669-689 // if (mpd.TaskNumberCheck.Length > 2) // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(mpd.TaskNumberCheck.Substring(0, 2))); // mpd.ParentBaseComponent = bd; // env.Keeper.Save(mpd); // savedMpd = mpd; //} #endregion #region LY - FLG //mpd.TaskNumberCheck = row[0].ToString(); //mpd.TaskCardNumber = row[0].ToString(); //mpd.Zone = row[1].ToString(); //mpd.Description = row[2].ToString(); //if(table.Columns.Count > 3) // mpd.Access = row[3].ToString(); //if(mpd.TaskNumberCheck.Length > 2) // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(mpd.TaskNumberCheck.Substring(0, 2))); #endregion #region LY - AZV //if (row[0].ToString().Length == 0) //{ // savedMpd.TaskCardNumber += $" {row[2]}"; // savedMpd.Zone += $" {row[3]}"; // savedMpd.Access += $" {row[4]}"; // savedMpd.Description += $" {row[6]}"; // env.Keeper.Save(savedMpd); //} //else //{ // var mpd = new MaintenanceDirective(); // mpd.TaskNumberCheck = row[0].ToString(); // var maintenanceManual = row[1].ToString().Split(); // var cardNumber = row[2].ToString().Split(); // var zone = row[3].ToString().Split(); // var access = row[4].ToString().Split(); // mpd.MaintenanceManual = string.Join(" ", maintenanceManual); // mpd.TaskCardNumber = string.Join(" ", cardNumber); // mpd.Zone = string.Join(" ", zone); // mpd.Access = string.Join(" ", access); // //mpd.Description = $"{row[5]} {row[6]}";//271 - 294 // mpd.Description = row[6].ToString(); // if (!string.IsNullOrEmpty(row[5].ToString())) // mpd.ManHours = Convert.ToDouble(row[5].ToString()); // if(mpd.TaskNumberCheck.Length > 2) // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(mpd.TaskNumberCheck.Substring(0, 2))); // mpd.ParentBaseComponent = bd; // env.Keeper.Save(mpd); // savedMpd = mpd; //} #endregion #region CRJ //if (row[0].ToString().Length == 0) // continue; //var mpd = new MaintenanceDirective(); //var taskNumberCheck = row[1].ToString().Split(); //var taskCardNumber = row[0].ToString().Split(); //var access = row[3].ToString().Split(); //mpd.TaskNumberCheck = string.Join(" ", taskNumberCheck); //mpd.TaskCardNumber = string.Join(" ", taskCardNumber); //mpd.Description = row[2].ToString(); //mpd.Access = string.Join(" ", access); //double q; //if (!string.IsNullOrEmpty(row[4].ToString()) && double.TryParse(row[4].ToString(), out q)) // mpd.ManHours = Convert.ToDouble(row[4].ToString()); //mpd.Remarks = $"{row[5]} {row[6]}"; //if(mpd.TaskNumberCheck.Length > 2) // mpd.ATAChapter = ata.FirstOrDefault(a => a.ShortName.Equals(mpd.TaskNumberCheck.Substring(0, 2))); //mpd.ParentBaseComponent = bd; //env.Keeper.Save(mpd); #endregion } } }