コード例 #1
0
        /// <summary>
        /// Добавляет связи сертификатов с товарами
        /// </summary>
        /// <param name="db"></param>
        /// <param name="links"></param>
        private static void AddCertificateProdLinks(InsertHelper insert)
        {
            var queryCertificateList = (from p in distinctProducts
                                        select new { p.Id, p.Certificates })
                                       .Select(s => new
            {
                List = s.Certificates
                       .Select(g => new Certificate
                {
                    ProductId  = s.Id,
                    Name       = g.Name,
                    IsHygienic = g.IsHygienic
                }).ToArray()
            })
                                       .SelectMany(s => s.List)
                                       .ToArray();

            var    list   = Mapper.Map <List <import_product_certificates> >(queryCertificateList);
            string title  = insert.Entity.ToString().ToLower();
            var    entity = new EntityHelper <import_product_certificates>
            {
                Db    = insert.Db,
                List  = list,
                Title = title
            };

            AddEntities(entity);
        }
コード例 #2
0
        /// <summary>
        /// Добавляет связи категорий с товарами
        /// </summary>
        /// <param name="db"></param>
        /// <param name="links"></param>
        private static void AddCatalogProdLinks(InsertHelper insert)
        {
            var queryCatalogList = (from p in distinctProducts
                                    select new { p.Id, p.Categories })
                                   .Select(s => new
            {
                List = s.Categories
                       .Select(g => new CatalogProductLink
                {
                    ProductId = s.Id,
                    CatalogId = g.Id
                }).ToArray()
            })
                                   .SelectMany(s => s.List)
                                   .Distinct()
                                   .ToArray();

            var uniqueCatalogProds = queryCatalogList
                                     .GroupBy(g => new { g.CatalogId, g.ProductId }, (key, group) => new CatalogProductLink
            {
                ProductId = key.ProductId,
                CatalogId = key.CatalogId
            });

            var    list   = Mapper.Map <List <import_product_categories> >(uniqueCatalogProds);
            string title  = insert.Entity.ToString().ToLower();
            var    entity = new EntityHelper <import_product_categories>
            {
                Db    = insert.Db,
                List  = list,
                Title = title
            };

            AddEntities(entity);
        }
コード例 #3
0
        public void AddBook(string id, string type, string name, string desc)
        {
            string message = "";

            if (type == "add")
            {
                try
                {
                    DBManager manager = new DBManager();
                    var       book    = manager.GetContext().Lib.Find(Convert.ToInt32(id));
                    UpdateHelper.FromBook(Convert.ToInt32(id), book.Book_title, book.Short_description, Convert.ToString(book.Number_copies + 1), book.How_many_times.ToString());
                    message = "Запись успешно обновлена";
                }
                catch (Exception ex)
                {
                    message = "Не удалось обновить запись. Попробуйте еще раз";
                }
            }
            else if (type == "new")
            {
                try
                {
                    DBManager manager = new DBManager();
                    Book      book    = new Book
                    {
                        Book_title        = name,
                        Short_description = desc,
                        Number_copies     = 1,
                        How_many_times    = 0
                    };
                    InsertHelper.FromBook(name, desc, Convert.ToString(1), Convert.ToString(0));
                    int       idBook = manager.GetContext().Lib.First(s => s.Book_title == name).Id;
                    DBManager man2   = new DBManager();

                    var order = man2.GetContext().BuyOrders.Where(s => s.Id_book == idBook);
                    if (order.Count() > 0)
                    {
                        foreach (var el in order)
                        {
                            DeleteHelper.FromBuyOrder(el.Id);
                        }
                    }
                    message = "Запись успешно обновлена";
                }
                catch (Exception ex)
                {
                    message = "Не удалось обновить запись. Попробуйте еще раз";
                }
            }
            else
            {
                message = "Не удалось обновить запись. Попробуйте еще раз";
            }
            Response.Redirect("/Home/Add?message=" + message);
        }
コード例 #4
0
        /// <summary>
        /// Работа с файлами импорта
        /// </summary>
        /// <param name="file"></param>
        private static bool FileProcessing(FileInfo file, dbModel db, ReceiverParamsHelper receiverParams)
        {
            try
            {
                SrvcLogger.Info("{preparing}", $"импорт данных из: '{file.Name}'");
                Log.Insert(0, $"Чтение данных: {file.Name}");

                using (FileStream fileStream = new FileStream(file.FullName, FileMode.Open))
                {
                    SrvcLogger.Info("{preparing}", $"данные прочитаны из файла: {file.Name}");
                    Log.Insert(0, "Данные прочитаны");

                    var helper = new InsertHelper
                    {
                        FileStream = fileStream,
                        Db         = db,
                        Entity     = Entity.Catalogs
                    };

                    if (file.Name.StartsWith("cat"))
                    {
                        InsertWithLogging(helper);
                    }
                    else if (file.Name.StartsWith("prod"))
                    {
                        foreach (Entity entity in Enum.GetValues(typeof(Entity)))
                        {
                            if (!entity.Equals(Entity.Catalogs))
                            {
                                helper.Entity = entity;
                                InsertWithLogging(helper);
                            }
                        }
                        Step++;

                        SrvcLogger.Info("{work}", "перенос данных из буферных таблиц");
                        Log.Insert(0, "Перенос данных из буферных таблиц");
                        Finalizer(db);
                        Step++;
                    }
                    else if (file.Name.Contains(".zip"))
                    {
                        ImageService imageService = new ImageService(receiverParams);
                        imageService.Execute(file);
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                SrvcLogger.Error("{error}", e.ToString());
                return(false);
            }
        }
コード例 #5
0
        public override void Write(int flowID, IEnumerable <KeyValuePair <long, Tick> > flow)
        {
            InsertHelper helper = helpers[flowID];

            foreach (var kv in flow)
            {
                helper.Insert(kv.Key, kv.Value.Symbol, kv.Value.Timestamp, kv.Value.Bid, kv.Value.Ask, kv.Value.BidSize, kv.Value.BidSize, kv.Value.Provider);
            }

            helpers[flowID].Flush();
        }
コード例 #6
0
        public string GetSql()
        {
            var sql = InsertHelper.GetInsertSql(_map, CreateValues);

            if (_map.HasAutoGeneratedId())
            {
                sql += " SELECT LAST_INSERT_ID();";
            }

            return(sql);
        }
コード例 #7
0
        public void GetColumns_SimpleObject_ShouldContainSimpleObjectsMappedColumns()
        {
            var simpleObjectMap = new SimpleObjectMap();

            var columns = InsertHelper.GetColumns(simpleObjectMap);

            var columneNames = columns.Select(p => p.ColumnName);

            Assert.That(columneNames, Contains.Item("`LongColumnName`"));
            Assert.That(columneNames, Contains.Item("`SomeString`"));
            Assert.That(columneNames, Contains.Item("`NullableLong`"));
            Assert.That(columneNames, Contains.Item("`Guid`"));
            Assert.That(columneNames, Contains.Item("`NullableGuid`"));
            Assert.That(columneNames, Contains.Item("`IntBasedEnum`"));
            Assert.That(columneNames, Contains.Item("`NullableIntBasedEnum`"));
        }
コード例 #8
0
        public void ReadBook()
        {
            try
            {
                var      type     = Request.Params["Type"];
                var      name     = Request.Params["selection"];
                var      idBook   = Convert.ToInt32(Request.Params["Id_book"]);
                string   message  = "";
                Employee employee = manager.GetContext().Employees.Where(s => s.FIO == name).FirstOrDefault();
                Book     book     = manager.GetContext().Lib.Find(idBook);
                var      issBook  = manager.GetContext().IssuedBooks.Where(s => s.Id_book == idBook);

                if (type == "read,")
                {
                    if (book.Number_copies - issBook.Count() > 0)
                    {
                        message += UpdateHelper.FromEmployee(employee.Id, employee.Department, employee.FIO, employee.Phone, employee.Read_books + 1);
                        message += InsertHelper.FromIssued(idBook, employee.Id, DateTime.Now.AddDays(15).ToString());
                        var d = manager.GetContext().ReadingOrders.Where(s => s.Id_employee == employee.Id);
                        if (d != null)
                        {
                            foreach (var b in d)
                            {
                                if (b.Id_book == idBook)
                                {
                                    DeleteHelper.FromReadingOrder(b.Id);
                                }
                            }
                        }
                    }
                    else
                    {
                        message = "В данный момент нет свободных книг. Вы можете оформить заказ на чтение";
                    }
                }
                else if (type == "order,")
                {
                    message = InsertHelper.FromReadingOrder(employee.Id, Convert.ToInt32(idBook));
                }

                Response.Redirect("/Home/Read?message=" + message);
            }
            catch (Exception ex)
            {
                Response.Redirect("/Home/Read?message=" + ex.Message);
            }
        }
コード例 #9
0
        public override void Init(int flowCount, long flowRecordCount)
        {
            helpers     = new InsertHelper[flowCount];
            connections = new FbConnection[flowCount];

            FbConnection.CreateDatabase(GetConnectionString());

            for (int i = 0; i < flowCount; i++)
            {
                connections[i] = new FbConnection(GetConnectionString());
                connections[i].Open();

                helpers[i] = new InsertHelper(insertsPerQuery, connections[i], CollectionName);
            }

            CreateTable(connections[0], CollectionName);
        }
コード例 #10
0
        /// <summary>
        /// Попытка вставки списка данных с логированием
        /// </summary>
        /// <param name="insert"></param>
        private static void InsertWithLogging(InsertHelper insert)
        {
            string title = insert.Entity.ToString().ToLower();

            try
            {
                SrvcLogger.Info("{work}", $"{dictionary[title]} начало");
                EmailBody += $"<p><b>{dictionary[title]}</b> начало</p>";

                switch (insert.Entity)
                {
                case Entity.Catalogs:
                    AddCategories(insert);
                    break;

                case Entity.Products:
                    distinctProducts = AddProducts(insert);
                    break;

                case Entity.CatalogProductLinks:
                    AddCatalogProdLinks(insert);
                    break;

                case Entity.Images:
                    AddImageProdLinks(insert);
                    break;

                case Entity.Certificates:
                    AddCertificateProdLinks(insert);
                    break;
                }

                SrvcLogger.Info("{work}", $"{dictionary[title]} конец");
                EmailBody += $"<p><b>{dictionary[title]}</b> конец</p>";
                UpdateCurrentStep();
            }
            catch (Exception e)
            {
                string errorMessage = e.ToString();
                EmailBody += $"<p>{errorMessage}</p>";
                SrvcLogger.Error("{error}", $"ошибка при импорте {dictionary[title]}");
                SrvcLogger.Error("{error}", errorMessage);
                CountFalse++;
            }
        }
コード例 #11
0
        /// <summary>
        /// Добавляет категории
        /// </summary>
        /// <param name="db"></param>
        /// <param name="catalogs"></param>
        private static void AddCategories(InsertHelper insert)
        {
            var serializer       = new XmlSerializer(typeof(CatalogList));
            var arrayOfCatalogs  = (CatalogList)serializer.Deserialize(insert.FileStream);
            var distinctCatalogs = (from c in arrayOfCatalogs.Catalogs
                                    select c).GroupBy(g => g.Id)
                                   .Select(s => s.First()).ToArray();

            var    list   = Mapper.Map <List <import_catalogs> >(distinctCatalogs);
            string title  = insert.Entity.ToString().ToLower();
            var    entity = new EntityHelper <import_catalogs>
            {
                Db    = insert.Db,
                List  = list,
                Title = title
            };

            AddEntities(entity);
        }
コード例 #12
0
        /// <summary>
        /// Добавляет продукцию
        /// </summary>
        /// <param name="db"></param>
        /// <param name="products"></param>
        private static Product[] AddProducts(InsertHelper insert)
        {
            Product[] result           = null;
            var       serializer       = new XmlSerializer(typeof(ArrayOfProducts));
            var       arrayOfProducts  = (ArrayOfProducts)serializer.Deserialize(insert.FileStream);
            var       distinctProducts = (from p in arrayOfProducts.Products
                                          select p).GroupBy(g => g.Id)
                                         .Select(s => s.First()).ToArray();

            var    list   = Mapper.Map <List <import_products> >(distinctProducts);
            string title  = insert.Entity.ToString().ToLower();
            var    entity = new EntityHelper <import_products>
            {
                Db    = insert.Db,
                List  = list,
                Title = title
            };

            AddEntities(entity);
            result        = distinctProducts;
            CountProducts = distinctProducts.Count();
            return(result);
        }
コード例 #13
0
 public IEnumerable <Property> GetColumns()
 {
     return(InsertHelper.GetColumns(_map));
 }
コード例 #14
0
 public string GetSql(int numberOfRows)
 {
     return(InsertHelper.GetUpsertSql(_map, columns => CreateValues(columns, numberOfRows)));
 }
コード例 #15
0
ファイル: InsertStepBindings.cs プロジェクト: rrai2/das-data
 public InsertStepBindings()
 {
     dbHelper = new InsertHelper(ScenarioContext.Current.Get <string>("connectionstring"));
 }
コード例 #16
0
        public override void Init(int flowCount, long flowRecordCount)
        {
            helpers = new InsertHelper[flowCount];
            connections = new FbConnection[flowCount];

            FbConnection.CreateDatabase(GetConnectionString());

            for (int i = 0; i < flowCount; i++)
            {
                connections[i] = new FbConnection(GetConnectionString());
                connections[i].Open();

                helpers[i] = new InsertHelper(insertsPerQuery, connections[i], CollectionName);
            }

            CreateTable(connections[0], CollectionName);
        }