Example #1
0
        private List <HardwareItemModel> ParseMB(string[] MBs, List <ParserRule> mbRules)
        {
            List <HardwareItemModel> mb_list       = new List <HardwareItemModel>();
            List <ManufacturerModel> manufacturers = new List <ManufacturerModel>();
            HardwareType             motherboard   = new HardwareType("Материнская плата");

            foreach (ParserRule r in mbRules)
            {
                manufacturers.Add(new ManufacturerModel(r.Rule_name));
            }
            foreach (string s in MBs)
            {
                foreach (ParserRule r in mbRules)
                {
                    if (Regex.IsMatch(s, r.Rule_name))
                    {
                        HardwareItemModel mb = new HardwareItemModel();
                        var socket           = Regex.Match(s, r.Property_templates["Сокет"]).Value;
                        mb.PropertyList.Add(new CompatibilityPropertyModel("Сокет", socket));
                        mb.Name         = Regex.Match(s, r.Property_templates["Name"]).Value;
                        mb.Cost         = s.SelectCost();
                        mb.Description  = s.SelectDescription();
                        mb.Manufacturer = manufacturers.Where(m => m.Name == r.Rule_name).FirstOrDefault();
                        mb.HardwareType = motherboard;
                        mb_list.Add(mb);
                    }
                }
            }
            return(mb_list);
        }
Example #2
0
        private List <HardwareItemModel> ParseGPU(string[] gpus, List <ParserRule> gpuRules)
        {
            List <HardwareItemModel> gpu_list      = new List <HardwareItemModel>();
            List <ManufacturerModel> manufacturers = new List <ManufacturerModel>();
            HardwareType             videocard     = new HardwareType("Видеокарта");

            foreach (ParserRule r in gpuRules)
            {
                manufacturers.Add(new ManufacturerModel(r.Rule_name));
            }
            foreach (string s in gpus)
            {
                foreach (ParserRule r in gpuRules)
                {
                    if (Regex.IsMatch(s, r.Rule_name))
                    {
                        HardwareItemModel gpu = new HardwareItemModel();
                        var prop = Regex.Match(s, r.Property_templates["Объём памяти"], RegexOptions.IgnoreCase).Value;
                        gpu.PropertyList.Add(new CompatibilityPropertyModel("Объём памяти", prop));
                        gpu.Name         = Regex.Match(s, r.Property_templates["Name"], RegexOptions.IgnoreCase).Groups[3].Value;
                        gpu.Description  = Regex.Match(s, r.Property_templates["Описание"]).Value;
                        gpu.Cost         = s.SelectCost();
                        gpu.Manufacturer = manufacturers.Where(m => m.Name == r.Rule_name).FirstOrDefault();
                        gpu.HardwareType = videocard;
                        gpu_list.Add(gpu);
                    }
                }
            }
            return(gpu_list);
        }
Example #3
0
        private List <HardwareItemModel> ParseCPU(string[] CPUs, List <ParserRule> cpuRules)
        {
            //Задаем тип комплектующего
            HardwareType type = new HardwareType("Процессор");
            //Создаем новый список процессоров
            List <HardwareItemModel> cpu_list = new List <HardwareItemModel>();
            //Создаем список производителей процессоров
            List <ManufacturerModel> cpu_manufacturers = new List <ManufacturerModel>();

            //Заполняем список производителей из правил
            foreach (ParserRule r in cpuRules)
            {
                cpu_manufacturers.Add(new ManufacturerModel(r.Rule_name));
            }
            //Перебираем все строки процессоров из прайса
            foreach (string s in CPUs)
            {
                //Для каждого правила
                foreach (ParserRule rule in cpuRules)
                {
                    //Если правило подходит к данной строке, заполняем характеристики
                    if (Regex.IsMatch(s, rule.Rule_name, RegexOptions.IgnoreCase))
                    {
                        var description = s.SelectDescription();
                        var cost        = s.SelectCost();
                        var sock        = Regex.Match(s, rule.Property_templates["Сокет"]).Value;
                        var cpu_name    = Regex.Match(s, string.Format(rule.Property_templates["Name"], Regex.Escape(sock))).Value;
                        var cpu         = new HardwareItemModel(cpu_name, cost, description, cpu_manufacturers.Where(m => m.Name == rule.Rule_name).FirstOrDefault(), type);
                        cpu.PropertyList.Add(new CompatibilityPropertyModel("Сокет", sock));
                        cpu_list.Add(cpu);
                    }
                }
            }
            return(cpu_list);
        }
Example #4
0
        private List <HardwareItemModel> ParseHDD(string[] hdds, List <ParserRule> hddRules)
        {
            List <HardwareItemModel> hdd_list      = new List <HardwareItemModel>();
            List <ManufacturerModel> manufacturers = new List <ManufacturerModel>();
            HardwareType             hd            = new HardwareType("Жесткий диск");

            foreach (ParserRule r in hddRules)
            {
                manufacturers.Add(new ManufacturerModel(r.Rule_name));
            }
            foreach (string s in hdds)
            {
                foreach (ParserRule r in hddRules)
                {
                    if (Regex.IsMatch(s, r.Rule_name))
                    {
                        HardwareItemModel hdd = new HardwareItemModel();
                        var prop = Regex.Match(s, r.Property_templates["Тип устройства"], RegexOptions.IgnoreCase).Value;
                        hdd.PropertyList.Add(new CompatibilityPropertyModel("Тип устройства", prop));
                        prop = Regex.Match(s, r.Property_templates["Разъём"]).Value;
                        hdd.PropertyList.Add(new CompatibilityPropertyModel("Разъём", prop));
                        prop = Regex.Match(s, r.Property_templates["Объём памяти"], RegexOptions.IgnoreCase).Value;
                        hdd.PropertyList.Add(new CompatibilityPropertyModel("Объём памяти", prop));
                        hdd.Name         = Regex.Match(s, r.Property_templates["Name"]).Value;
                        hdd.Cost         = s.SelectCost();
                        hdd.Description  = s.SelectDescription();
                        hdd.Manufacturer = manufacturers.Where(m => m.Name == r.Rule_name).FirstOrDefault();
                        hdd.HardwareType = hd;
                        hdd_list.Add(hdd);
                    }
                }
            }
            return(hdd_list);
        }
Example #5
0
        private List <HardwareItemModel> ParseMemory(string[] mems, List <ParserRule> memRules)
        {
            List <HardwareItemModel> mem_list      = new List <HardwareItemModel>();
            List <ManufacturerModel> manufacturers = new List <ManufacturerModel>();
            HardwareType             ram           = new HardwareType("Оперативная память");

            foreach (ParserRule r in memRules)
            {
                manufacturers.Add(new ManufacturerModel(r.Rule_name));
            }
            foreach (string s in mems)
            {
                foreach (ParserRule r in memRules)
                {
                    if (Regex.IsMatch(s, r.Rule_name))
                    {
                        HardwareItemModel mem = new HardwareItemModel();
                        var prop = Regex.Match(s, r.Property_templates["Тип памяти"]).Value;
                        mem.PropertyList.Add(new CompatibilityPropertyModel("Тип памяти", prop));
                        prop = Regex.Match(s, r.Property_templates["Объём памяти"]).Value;
                        mem.PropertyList.Add(new CompatibilityPropertyModel("Объём памяти", prop));
                        mem.Name         = Regex.Match(s, r.Property_templates["Name"]).Value;
                        mem.Cost         = s.SelectCost();
                        mem.Description  = Regex.Match(s, r.Property_templates["Description"]).Value;
                        mem.Manufacturer = manufacturers.Where(m => m.Name == r.Rule_name).FirstOrDefault();
                        mem.HardwareType = ram;
                        mem_list.Add(mem);
                    }
                }
            }
            return(mem_list);
        }
        public async Task <HardwareItemModel> UpdateHwItemAsync(int id, HardwareItemModel itemModel)
        {
            var entity = await CheckHardwareItemEntityAsync(itemModel);

            var itemEntityToUpdate = await _repositoryContainer.HwItems.GetFullHwItemByIdAsync(id);

            if (itemEntityToUpdate == null)
            {
                return(null);
            }

            itemEntityToUpdate.Name         = entity.Name;
            itemEntityToUpdate.Cost         = entity.Cost;
            itemEntityToUpdate.Description  = entity.Description;
            itemEntityToUpdate.Manufacturer = entity.Manufacturer;
            itemEntityToUpdate.HardwareType = entity.HardwareType;
            itemEntityToUpdate.PropertiesItems.Clear();
            itemEntityToUpdate.PropertiesItems = entity.PropertiesItems;
            await _repositoryContainer.CommitAsync();

            var updatedEntity = await _repositoryContainer.HwItems.GetFullHwItemByIdAsync(id);

            var updatedItem = _mapper.Map <HardwareItemModel>(updatedEntity);

            return(updatedItem);
        }
        public async Task <int> AddHwItem(HardwareItemModel itemModel)
        {
            var entity = await CheckHardwareItemEntityAsync(itemModel);

            await _repositoryContainer.HwItems.AddAsync(entity);

            await _repositoryContainer.CommitAsync();

            return(entity.Id);
        }
Example #8
0
        public async Task <ActionResult <HardwareItemModel> > UpdateItem(int id, [FromBody] HardwareItemModel itemModel)
        {
            if (id == 0)
            {
                return(BadRequest());
            }
            var result = await _hardwareItemService.UpdateHwItemAsync(id, itemModel);

            if (result == null)
            {
                return(NotFound());
            }
            return(result);
        }
        private async Task <HardwareItemEntity> CheckHardwareItemEntityAsync(HardwareItemModel itemModel)
        {
            var entity = _mapper.Map <HardwareItemEntity>(itemModel);

            var manufacturerCheck =
                await _repositoryContainer.Manufacturers
                .SingleOrDefaultAsync(m => m.Name.ToLower() == itemModel.Manufacturer.ToLower());

            if (manufacturerCheck != null)
            {
                entity.Manufacturer = manufacturerCheck;
            }

            var hardwareTypeCheck =
                await _repositoryContainer.HardwareTypes.SingleOrDefaultAsync(h =>
                                                                              h.Name.ToLower() == itemModel.HardwareType.ToLower());

            if (hardwareTypeCheck != null)
            {
                entity.HardwareType = hardwareTypeCheck;
            }

            foreach (var propertyModel in itemModel.PropertyList)
            {
                var propertyCheck = await _repositoryContainer.CompatibilityPropertyRepository.SingleOrDefaultAsync(p =>
                                                                                                                    p.PropertyName.ToLower() == propertyModel.PropertyName.ToLower() && p.PropertyType.ToLower() == propertyModel.PropertyType.ToLower());

                if (propertyCheck != null)
                {
                    foreach (var propertyEntity in entity.PropertiesItems)
                    {
                        if (propertyEntity.CompatibilityProperty.PropertyName.ToLower() == propertyCheck.PropertyName.ToLower() &&
                            propertyEntity.CompatibilityProperty.PropertyType.ToLower() == propertyCheck.PropertyType.ToLower())
                        {
                            propertyEntity.CompatibilityProperty = propertyCheck;
                        }
                    }
                }
            }
            return(entity);
        }
Example #10
0
        public async Task <ActionResult <int> > AddHwItem([FromBody] HardwareItemModel itemModel)
        {
            var result = await _hardwareItemService.AddHwItem(itemModel);

            return(Ok(result));
        }