Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }