Пример #1
0
        private void ReadPsd(VaildateArrowCodeVM vm)
        {
            var psdFullPath = vm.FileName;

            if (File.Exists(psdFullPath) == false)
            {
                return;
            }

            var fileInfo = new FileInfo(psdFullPath);
            var fileName = fileInfo.Name;

            var pos = fileInfo.Name.LastIndexOf(".");

            if (pos < 0)
            {
                return;
            }

            var bw = new BackgroundWorker();

            bw.DoWork += (s, e) =>
            {
                try
                {
                    _psdReader.ReadFile(psdFullPath);
                }
                catch (Exception ex)
                {
                    e.Result = ex.ToString();
                }
            };

            bw.RunWorkerCompleted += (s, e) =>
            {
                vm.ResultMessage = e.Result as string;

                var list = _psdReader.GetList();
                if (vm != null)
                {
                    IEnumerable <PsdLayerVM> arrowCodeList;
                    if (vm.ILS_Type != "CE")
                    {
                        arrowCodeList = list.Where(x => x.Name.Contains("Arrow_"));
                    }
                    else
                    {
                        arrowCodeList = list.Where(x => x.Name.Contains("d0"));
                    }

                    var arrowListTable = grid.DataSource as DataTable;

                    var width  = _psdReader.FileSectionWidth;
                    var height = _psdReader.FileSectionHeight;

                    vm.Arrow_Id = string.Format("Width:{0} X Height:{1}", width, height);
                    var patternId = arrowListTable.Rows.Cast <DataRow>().Where(x => x["pattern_id"].ToString() == vm.Pattern_Id).FirstOrDefault();
                    if (patternId == null)
                    {
                        return;
                    }

                    patternId["ResultMessage"] = vm.Arrow_Id;

                    foreach (var arrowCode in arrowCodeList)
                    {
                        var arrowCodeName = arrowCode.Name;
                        if (vm.ILS_Type != "CE")
                        {
                            arrowCodeName = arrowCodeName.Replace("Arrow_", string.Empty);
                        }
                        else
                        {
                            arrowCodeName = arrowCodeName.Replace("_AI", string.Empty);
                        }

                        var item = arrowListTable.NewRow();
                        foreach (var property in vm.GetType().GetProperties())
                        {
                            if (property.Name != "Arrow_Id")
                            {
                                item[property.Name] = property.GetValue(vm, null);
                            }
                            else
                            {
                                item[property.Name]   = arrowCodeName;
                                item["ResultMessage"] = "";
                            }
                        }
                        arrowListTable.Rows.Add(item);
                    }

                    var table         = gridExcel.DataSource as DataTable;
                    var patternIdList = table.Rows.Cast <DataRow>().Where(x => vm.Pattern_Id.Equals(x["pattern_id"].ToString(), StringComparison.CurrentCultureIgnoreCase));
                    if (patternIdList.Count() > 0)
                    {
                        foreach (var serverItem in patternIdList)
                        {
                            var isExist = arrowListTable.Rows.Cast <DataRow>().Where(x => x["arrow_id"].ToString().Equals(serverItem["arrow_id"].ToString(), StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();

                            if (isExist != null)
                            {
                                isExist["Result"]   = true;
                                patternId["Result"] = true;
                            }
                            else
                            {
                                patternId["Result"] = false;
                            }
                        }
                    }

                    if (m_psdCnt - 1 > m_rowIdx)
                    {
                        m_rowIdx++;
                        ValidateArrowCode(m_rowIdx);
                        return;
                    }
                    else
                    {
                        arrowListTable.DefaultView.Sort = "[Index]";
                        arrowListTable.AcceptChanges();
                        btnValidateCode.Enabled = true;
                    }
                }
            };
            bw.RunWorkerAsync();
            btnValidateCode.Enabled = false;
        }