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); }); }
public static void CreateInstanceStatistics(Guid userId, BulletinInstance instance) { Create(TaskCommand.InstanceStatistics, a => { //Обязательные a.BoardId = instance.BoardId; a.UserId = userId; a.InstanceId = instance.Id; }); }
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; }); }
/// <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); }
///------------------------------------------------------------------------------------------------- /// <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(); // } // } //}); }); }