public ShellViewModel(IDialogCoordinator dialogCoordinator, ICommandGenerator commandGenerator, IConsole console, MotorFactory motorFactory) { _dialogCoordinator = dialogCoordinator ?? throw new ArgumentNullException(nameof(dialogCoordinator)); _commandGenerator = commandGenerator ?? throw new ArgumentNullException(nameof(commandGenerator)); _console = console ?? throw new ArgumentNullException(nameof(console)); _motorFactory = motorFactory ?? throw new ArgumentNullException(nameof(motorFactory)); _console.OutputDataReceived += (object sender, DataReceivedEventArgs e) => BusyText = e.Data; var lastSettings = Properties.Settings.Default.lastSettings; LoadConfigFromSerialized(lastSettings); }
public void InsertMotors(IEnumerable <Motor> motors) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(ConnectionStrHelper.CnnVal("TestDB"))) { string motorSql = $@"insert into dbo.Motors (MotorNumber, MotorType, Displacement, Feature, Description) values (@MotorNumber, @MotorType, @Displacement, @Feature, @Description)"; string partsSql = $@"insert into dbo.Parts (PartNumber, Designation, Description) values (@PartNumber, @Designation, @Description)"; string BomItemSql = $@"insert into dbo.BOMItems(MotorNumber, PartNumber, PositionNumber, Quantity) values (@MotorNumber, @PartNumber, @PositionNumber, @Quantity)"; connection.Execute(motorSql, MotorFactory.BulidMotorRecordList(motors)); var partsToInsert = motors.SelectMany(m => m.BOM).Select(b => b.PartItem).Distinct(); connection.Execute(partsSql, partsToInsert); var bomItemsToInsert = CreateDynItemsListFromBomItemsInMotor(motors.ToList()); connection.Execute(BomItemSql, bomItemsToInsert); } }
public IEnumerable <Motor> GetAllMotors() { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(ConnectionStrHelper.CnnVal("TestDB"))) { var lookupMotors = new Dictionary <string, MotorRecord>(); var lookupParts = new Dictionary <string, Part>(); var allMotorsWithBomItems = connection.Query <MotorRecord, BOMItemRecord, Part, MotorRecord> (@"select m.*, bi.*, p.* from Motors m inner join BOMItems bi on m.MotorNumber = bi.MotorNumber inner join Parts p on bi.PartNumber = p.PartNumber", (m, bi, p) => { MotorRecord motor; Part part; if (!lookupMotors.TryGetValue(m.MotorNumber, out motor)) { lookupMotors.Add(m.MotorNumber, motor = m); } if (!lookupParts.TryGetValue(p.PartNumber, out part)) { lookupParts.Add(p.PartNumber, part = p); } if (motor.BOM == null) { motor.BOM = new List <BOMItemRecord>(); } bi.PartItem = part; motor.BOM.Add(bi); return(motor); }, splitOn: "MotorNumber,PartNumber").AsQueryable(); var resultInRecords = lookupMotors.Values; var result = MotorFactory.BulidMotor(resultInRecords); return(result); } }
public Motor GetMotorByMotorNumber(string motorNumber) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(ConnectionStrHelper.CnnVal("TestDB"))) { var queryResult = connection.Query <MotorRecord, BOMItemRecord, Part, MotorRecord> (@"select m.*, bi.*, p.* from Motors m inner join BOMItems bi on m.MotorNumber = bi.MotorNumber inner join Parts p on bi.PartNumber = p.PartNumber where m.MotorNumber = @motorNumber", (m, bi, p) => { if (m.BOM == null) { m.BOM = new List <BOMItemRecord>(); } m.BOM.Add(bi); return(m); }, splitOn: "MotorNumber,PartNumber").AsQueryable(); var result = MotorFactory.BulidMotor(queryResult.FirstOrDefault(), queryResult.FirstOrDefault().BOM, queryResult.FirstOrDefault().BOM.Select(bi => bi.PartItem)); return(result); } }