Exemplo n.º 1
0
 public static void GetInstanceStatistics(BulletinInstance instance)
 {
     BCT.Execute(d =>
     {
         var bulletin = d.BulletinDb.Bulletins.FirstOrDefault(q => q.Id == instance.BulletinId);
         TaskHelper.CreateInstanceStatistics(bulletin.UserId, instance);
     });
 }
Exemplo n.º 2
0
        public static void CreateInstanceStatistics(Guid userId, BulletinInstance instance)
        {
            Create(TaskCommand.InstanceStatistics, a =>
            {
                //Обязательные
                a.BoardId = instance.BoardId;
                a.UserId  = userId;

                a.InstanceId = instance.Id;
            });
        }
Exemplo n.º 3
0
        public static void CreateActivateInstance(Guid userId, BulletinInstance instance, DateTime publicationDate)
        {
            Create(TaskCommand.ActivateInstance, a =>
            {
                //Обязательные
                a.BoardId = instance.BoardId;
                a.UserId  = userId;

                a.AccessId   = instance.AccessId;
                a.InstanceId = instance.Id;
                a.TargetDate = publicationDate;
            });
        }
Exemplo n.º 4
0
        /// <summary>
        /// Создаёт базовую инстанцию без распределения по доступу
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static IEnumerable <BulletinInstance> CreateInstance(Bulletin bulletin, Guid?templateId = null)
        {
            var result = new List <BulletinInstance>();

            BCT.Execute(c =>
            {
                var boards = c.BulletinDb.Boards.ToArray();
                foreach (var board in boards)
                {
                    var instance        = new BulletinInstance();
                    instance.BoardId    = board.Id;
                    instance.BulletinId = bulletin.Id;
                    instance.GroupId    = bulletin.GroupId.Value;
                    instance.TemplateId = templateId;
                    instance.StateEnum  = BulletinInstanceState.Created;
                    result.Add(instance);
                }
                c.SaveChanges();
            });
            return(result);
        }
Exemplo n.º 5
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>   Получаем список буллетинов учетки и сохраняем новые в БД </summary>
        ///
        /// <remarks>   SV Milovanov, 30.01.2018. </remarks>
        ///-------------------------------------------------------------------------------------------------

        public override void GetBulletins()
        {
            DCT.Execute(data =>
            {
                Exit();
                Auth();
                var context = DCT.Context;
                var bulletins = new List<BulletinPackage>();
                var tabStates = new List<TabState>();
                WebWorker.Execute(() =>
                {
                    WebWorker.NavigatePage(ProfileUrl);

                    var tabs = WebWorker.WebDocument.GetElementsByTagName("li").Cast<HtmlElement>()
                       .Where(q => q.GetAttribute("className").Contains("tabs-item")).ToArray();

                    tabStates.Add(new TabState
                    {
                        Title = "Активные",
                        Href = ProfileUrl,
                    });

                    foreach (var tab in tabs)
                    {
                        if (!tab.CanHaveChildren) continue;

                        foreach (HtmlElement ch in tab.Children)
                        {
                            if (ch.TagName.ToLower() == "a")
                            {
                                var tabUrl = ch.GetAttribute("href");
                                var tabState = ch.InnerText;

                                tabStates.Add(new TabState
                                {
                                    Title = tabState,
                                    Href = tabUrl,
                                });
                            }
                        }
                    }



                });
                WebWorker.Execute(() =>
                {
                    foreach (var tabState in tabStates)
                    {
                        WebWorker.NavigatePage(tabState.Href);

                        var nextPages = new List<string>();
                        nextPages.Add(tabState.Href);

                        var hasNextPage = true;
                        do
                        {
                            var result = GetBulletinPages(tabState.Title);
                            bulletins.AddRange(result);

                            var nextPage = WebWorker.WebDocument.GetElementsByTagName("a").Cast<HtmlElement>()
                                .FirstOrDefault(q => q.GetAttribute("className").Contains("js-pagination-next"));
                            if (nextPage == null) hasNextPage = false;
                            else
                            {
                                var nextPageHref = nextPage.GetAttribute("href");
                                nextPages.Add(nextPageHref);
                                hasNextPage = true;
                                nextPage.InvokeMember("click");
                                Thread.Sleep(1000);
                            }
                        } while (hasNextPage);
                    }
                });


                WebWorker.Execute(() =>
                {
                    DCT.Execute(d =>
                    {

                        foreach (var bulletin in bulletins)
                        {
                            var url = bulletin.Url;
                            var bs = d.Db1.BulletinInstances.ToArray();
                            var dbBulletinInstance = d.Db1.BulletinInstances.FirstOrDefault(q => q.Url == url);
                            if (dbBulletinInstance == null)
                            {
                                var dbBulletin = new Bulletin
                                {
                                    UserId = d.Objects.CurrentUser.Id,
                                };
                                d.Db1.Bulletins.Add(dbBulletin);
                                d.Db1.SaveChanges();

                                dbBulletinInstance = new BulletinInstance
                                {
                                    AccessId = d.Objects.CurrentAccess.Id,
                                    BoardId = Uid,
                                    BulletinId = dbBulletin.Id,
                                    HasRemoved = false,
                                    LastChangeId = null,
                                    Url = bulletin.Url,
                                    State = 0,
                                };
                                d.Db1.BulletinInstances.Add(dbBulletinInstance);
                                d.Db1.SaveChanges();
                            }
                        }
                    });
                });
                //WebWorker.Execute(() =>
                //{
                //    var groupContainer = GroupContainerList.Get(Uid);
                //    foreach (var bulletin in bulletins)
                //    {
                //        var url = Path.Combine(bulletin.Url, "edit");
                //        WebWorker.NavigatePage(url);
                //        Thread.Sleep(1500);

                //        var groupElement = WebWorker.WebDocument.GetElementsByTagName("div").Cast<HtmlElement>()
                //            .FirstOrDefault(q => q.GetAttribute("className").Contains("form-category-path"));

                //        if (groupElement == null) continue;

                //        var categories = groupElement.InnerText.Split('/').Select(q => q.Trim()).ToArray();
                //        bulletin.Signature = new GroupSignature(categories);

                //        var group = groupContainer.Get(bulletin.Signature.GetHash());

                //        if (group == null) continue;

                //        var fieldSetter = FieldContainerList.Get(Uid);
                //        fieldSetter.LoadFieldsFromGroup(bulletin.Signature);

                //        var dictionary = new Dictionary<string, string>();
                //        foreach (var field in group.Fields)
                //        {
                //            var value = fieldSetter.GetField(field.Key);
                //            dictionary.Add(field.Key, value);
                //        }
                //        bulletin.Fields = dictionary;
                //    }


                //});

                //WebWorker.Execute(() =>
                //{
                //    var groups = bulletins.Where(q => q.Fields != null && q.Fields.Count > 0).GroupBy(q => q.Signature.ToString());
                //    foreach (var groupedBulletins in groups)
                //    {
                //        var xls = new FileInfo(Path.Combine(Directory.GetCurrentDirectory(), $"edit_bulletins[{groupedBulletins.Key}].xlsx"));
                //        if (xls.Exists)
                //            xls.Delete();
                //        var firstBulletin = groupedBulletins.FirstOrDefault();
                //        using (var package = new ExcelPackage(xls))
                //        {
                //            var worksheet = package.Workbook.Worksheets.Add("Мои объявления");
                //            var keys = firstBulletin.Fields.Keys;
                //            var count = 0;
                //            foreach (var k in keys)
                //            {
                //                var cell = worksheet.Cells[1, count + 1];
                //                cell.Style.Font.Size = 14;
                //                cell.Value = k;
                //                cell.AutoFitColumns();
                //                count++;
                //            }
                //            var row = 2;
                //            foreach (var bulletin in groupedBulletins)
                //            {
                //                var column = 0;
                //                foreach (var k in keys)
                //                {
                //                    var cell = worksheet.Cells[row, column + 1];
                //                    var field = bulletin.Fields[k];
                //                    cell.Value = field;
                //                    column++;
                //                }

                //                worksheet.Column(column + 1).Hidden = true;
                //                var urlCell = worksheet.Cells[row, column + 1];
                //                urlCell.Value = bulletin.Url;

                //                worksheet.Column(column + 2).Hidden = true;
                //                var stateCell = worksheet.Cells[row, column + 2];
                //                stateCell.Value = bulletin.State;
                //                row++;
                //            }

                //            package.Save();
                //        }

                //    }
                //});
            });
        }