예제 #1
0
        public List <PackResult> IntegratePack(string request)
        {
            var objs          = JsonConvert.DeserializeObject <List <ProductGateInfo> >(request);
            var lookupManager = new LookupManager(UserConnection);
            var productTreeLookupCollection = new ProductTreeLookupCollection(UserConnection);
            var result = new List <PackResult>();

            foreach (var info in objs)
            {
                try
                {
                    var group = productTreeLookupCollection.FindGroup(info.Group);
                    if (group == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Группа продукта не найдена среди существующих в bpm’online"
                        });

                        continue;
                    }

                    var subCategory = group.Parent;
                    if (subCategory == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Подкатегория продукта не найдена среди существующих в bpm’online"
                        });

                        continue;
                    }

                    if (subCategory.Name != info.SubCategory)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Подкатегория продукта не соответствует подкатегории в bpm’online"
                        });

                        continue;
                    }

                    var category = subCategory.Parent;
                    if (category == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Категория продукта не найдена среди существующих в bpm’online"
                        });

                        continue;
                    }

                    if (category.Name != info.Category)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Категория продукта не соответствует категории в bpm’online"
                        });

                        continue;
                    }

                    var direction = category.Parent;
                    if (direction == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Дирекция продукта не найдена среди существующих в bpm’online"
                        });

                        continue;
                    }

                    if (direction.Name != info.Direction)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Диреция продукта не соответствует дирекции в bpm’online"
                        });

                        continue;
                    }

                    var sizeId = lookupManager.FindLookupIdByName(info.Size, "SmrProductSize");
                    if (sizeId == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Размер продукта не найден среди существующих в bpm’online"
                        });

                        continue;
                    }

                    var tradeMarkId = lookupManager.FindLookupIdByName(info.Brand, "Trademark");
                    if (tradeMarkId == null)
                    {
                        result.Add(new PackResult()
                        {
                            IsSuccess    = false,
                            Id           = info.ERPId,
                            ErrorMessage = "Бренд продукта не найден среди существующих в bpm’online"
                        });

                        continue;
                    }

                    var objId = (new Select(UserConnection).Top(1).Column("Id").From(_tableName).Where("Code").IsEqual(Column.Parameter(info.Code)) as Select).ExecuteScalar <Guid>();

                    if (objId == Guid.Empty)
                    {
                        GetInsertQuery(info, direction.Id, category.Id, subCategory.Id, group.Id, sizeId, tradeMarkId).Execute();
                    }
                    else
                    {
                        GetUpdateQuery(info, direction.Id, category.Id, subCategory.Id, group.Id, sizeId, tradeMarkId).Execute();
                    }

                    result.Add(new PackResult()
                    {
                        IsSuccess = true,
                        Id        = info.ERPId
                    });
                }
                catch (Exception e)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = e.Message
                    });
                }
            }
            return(result);
        }
예제 #2
0
        public PackResult PrimaryIntegratePack(string request)
        {
            var objs          = JsonConvert.DeserializeObject <List <ProductGateInfo> >(request);
            var lookupManager = new LookupManager(UserConnection);
            var productTreeLookupCollection = new ProductTreeLookupCollection(UserConnection);
            var result = new List <PackResult>();
            var sb     = new StringBuilder();

            sb.AppendLine(GetInsertHead());
            var values = new List <string>();

            foreach (var info in objs)
            {
                var group = productTreeLookupCollection.FindGroup(info.Group);
                if (group == null)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Группа продукта не найдена среди существующих в bpm’online"
                    });

                    continue;
                }

                var subCategory = group.Parent;
                if (subCategory == null)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Подкатегория продукта не найдена среди существующих в bpm’online"
                    });

                    continue;
                }

                if (subCategory.Name != info.SubCategory)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Подкатегория продукта не соответствует подкатегории в bpm’online"
                    });

                    continue;
                }

                var category = subCategory.Parent;
                if (category == null)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Категория продукта не найдена среди существующих в bpm’online"
                    });

                    continue;
                }

                if (category.Name != info.Category)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Категория продукта не соответствует категории в bpm’online"
                    });

                    continue;
                }

                var direction = category.Parent;
                if (direction == null)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Дирекция продукта не найдена среди существующих в bpm’online"
                    });

                    continue;
                }

                if (direction.Name != info.Direction)
                {
                    result.Add(new PackResult()
                    {
                        IsSuccess    = false,
                        Id           = info.ERPId,
                        ErrorMessage = "Диреция продукта не соответствует дирекции в bpm’online"
                    });

                    continue;
                }
                var sizeId      = lookupManager.FindLookupIdByName(info.Size, "SmrProductSize");
                var tradeMarkId = lookupManager.FindLookupIdByName(info.Brand, "Trademark");

                values.Add(GetInsertValues(info, direction.Id, category.Id, subCategory.Id, group.Id, sizeId, tradeMarkId));
            }

            sb.AppendLine(string.Join(",", values));
            new CustomQuery(UserConnection, sb.ToString()).Execute();
            return(new PackResult()
            {
                IsSuccess = true,
            });
        }