예제 #1
0
        private void Category_OnLoaded(object sender, RoutedEventArgs e)
        {
            var query = Db.Query("SELECT Name, FromFile FROM categories WHERE Path = @Path", new [] { new SQLiteParameter("Path", BookKeeper.GetRelativeBookFilePath(_bookFile)) });

            while (query.Read())
            {
                var category = new CategoryTag
                {
                    Name     = query["Name"].ToString(),
                    FromFile = SQLiteConvert.ToBoolean(query["FromFile"])
                };

                _categoryTagList.Add(category);
            }

            if (_categoryTagList.Count > 0)
            {
                CategoryTagsBorder.Visibility = Visibility.Visible;
            }

            Categories.ItemsSource = _categoryTagList;

            var defaultCategories = Properties.Settings.Default.DefaultCategories.Split(';');
            var hintList          = new List <string>(defaultCategories);

            hintList.AddRange(LibraryStructure.CategoryList());
            hintList.Sort();

            new Whisperer
            {
                TextBox  = (TextBox)sender,
                HintList = hintList
            };
        }
        public async Task <ActionResult <Tag> > Add([FromBody] CreateTagRequest request)
        {
            var newTag = new Tag()
            {
                Name = request.Name,
            };
            List <CategoryTag> categoryTags = new List <CategoryTag>();

            if (request.CategoryNames != null)
            {
                foreach (var item in request.CategoryNames)
                {
                    var categoryTag = new CategoryTag();
                    categoryTag.TagId      = newTag.Id;
                    categoryTag.CategoryId = _context.Categories.FirstOrDefault(category => category.Name == item).Id;
                    categoryTags.Add(categoryTag);
                }
            }

            newTag.CategoryTags = categoryTags;
            _context.Tags.Add(newTag);
            _context.SaveChanges();

            return(Ok(newTag));
        }
        public async Task <ActionResult <int> > Update([FromRoute] int id, [FromBody] CreateTagRequest request)
        {
            Tag oldTag = _context.Tags.FirstOrDefault(x => x.Id == id);

            if (oldTag == null)
            {
                return(NotFound());
            }

            var newTag = new Tag()
            {
                Name = request.Name,
            };
            List <CategoryTag> categoryTags = new List <CategoryTag>();

            foreach (var item in request.CategoryNames)
            {
                var categoryTag = new CategoryTag();
                categoryTag.TagId      = newTag.Id;
                categoryTag.CategoryId = _context.Categories.FirstOrDefault(category => category.Name == item).Id;
                categoryTags.Add(categoryTag);
            }
            newTag.CategoryTags = categoryTags;
            var oldData = _context.CategoryTags.Where(temp => temp.TagId == oldTag.Id);

            foreach (var item in oldData)
            {
                _context.CategoryTags.Remove(item);
            }
            oldTag.Name         = newTag.Name;
            oldTag.CategoryTags = newTag.CategoryTags;
            await _context.SaveChangesAsync();

            return(Ok(oldTag));
        }
예제 #4
0
        public int AddNewCategoryTag(CategoryTag categoryTag)
        {
            var id = _CategoryTag.Add(categoryTag).Entity.Id;

            _uow.SaveChanges();

            return(id);
        }
        public async Task <ActionResult <GetAllCategoriesResponse> > Update([FromRoute] int id, [FromBody] AddCategoryRequest request)
        {
            var oldcategory = _context.Categories
                              .FirstOrDefault(x => x.Id == request.Id);

            if (oldcategory == null)
            {
                return(NotFound());
            }

            oldcategory.Name        = request.Name;
            oldcategory.Description = request.Description;
            oldcategory.ParentId    = request.ParentId;
            oldcategory.Color       = request.Color;

            if (request.tags != null)
            {
                var categoryTags = new List <CategoryTag>();
                var oldTags      = _context.CategoryTags.Where(temp => temp.CategoryId == oldcategory.Id);
                foreach (var item in oldTags)
                {
                    _context.CategoryTags.Remove(item);
                }
                request.tags.ForEach(tag =>
                {
                    CategoryTag categoryTag = new CategoryTag();
                    categoryTag.CategoryId  = oldcategory.Id;
                    categoryTag.TagId       = _context.Tags.First(temp => temp.Name == tag).Id;
                    categoryTags.Add(categoryTag);
                    _context.CategoryTags.Add(categoryTag);
                });
                oldcategory.CategoryTags = categoryTags;
            }
            if (oldcategory.SchedulerEvents == null)
            {
                oldcategory.SchedulerEvents = new List <SchedulerEvent>();
            }
            var response = new GetAllCategoriesResponse();

            response.Id              = oldcategory.Id;
            response.Name            = oldcategory.Name;
            response.ParentId        = request.ParentId;
            response.SchedulerEvents = oldcategory.SchedulerEvents.ToList();
            response.Tags            = request.tags;
            response.Color           = oldcategory.Color;
            response.Description     = oldcategory.Description;

            await _context.SaveChangesAsync();

            return(Ok(response));
        }
        public async Task <ActionResult <GetAllCategoriesResponse> > Add([FromBody] AddCategoryRequest request)
        {
            var newCategory = new Category()
            {
                Name        = request.Name,
                Description = request.Description,
                Color       = request.Color,
                ParentId    = request.ParentId,
            };

            newCategory.SchedulerEvents = new List <SchedulerEvent>();
            var categoryTags = new List <CategoryTag>();

            if (request.tags != null)
            {
                request.tags.ForEach(tag =>
                {
                    CategoryTag categoryTag = new CategoryTag();
                    categoryTag.CategoryId  = newCategory.Id;
                    categoryTag.TagId       = _context.Tags.First(temp => temp.Name == tag).Id;
                    categoryTags.Add(categoryTag);
                    _context.CategoryTags.Add(categoryTag);
                });
            }
            newCategory.CategoryTags = categoryTags;
            _context.Categories.Add(newCategory);
            await _context.SaveChangesAsync();

            var response = new GetAllCategoriesResponse();

            response.Id              = newCategory.Id;
            response.Name            = newCategory.Name;
            response.ParentId        = request.ParentId;
            response.SchedulerEvents = newCategory.SchedulerEvents.ToList();
            response.Tags            = request.tags;
            response.Color           = newCategory.Color;
            response.Description     = newCategory.Description;
            return(Ok(response));
        }
예제 #7
0
        public void CreateBroadcast(String p_Name, String p_Description, CategoryTag p_Tag)
        {
            if (Library.User.Data == null)
            {
                return;
            }

            SpecialGuests.Clear();
            CurrentBroadcastName        = p_Name;
            CurrentBroadcastDescription = p_Description;
            CurrentBroadcastCategoryTag = p_Tag;
            ActiveBroadcastID           = null;
            Data = null;

            if (Library.Chat.LoggedInMaster != null && Library.Chat.LoggedInMaster.CurrentBroadcast != null)
            {
                ActiveBroadcastID       = Library.Chat.LoggedInMaster.CurrentBroadcast;
                CurrentBroadcastPicture = null;
                Data = new BroadcastData()
                {
                };

                // Check if broadcast still exists.
                Library.Chat.GetSubscriptionData(Library.Chat.GetChatChannel(ActiveBroadcastID), new List <String>()
                {
                    "s",
                    "h",
                    "owners",
                    "n",
                    "t",
                    "owner_subscribed",
                    "i",
                    "d",
                    "tl",
                    "py",
                    "qc"
                }, OnBroadcastSubscriptionData);

                return;
            }

            var s_LastBroadcast = GetLastBroadcast();

            if (s_LastBroadcast != null)
            {
                ActiveBroadcastID       = s_LastBroadcast.BroadcastID;
                CurrentBroadcastPicture = null;
                Data = s_LastBroadcast;

                // Check if broadcast still exists.
                Library.Chat.GetSubscriptionData(Library.Chat.GetChatChannel(ActiveBroadcastID), new List <String>()
                {
                    "s",
                    "h",
                    "owners",
                    "n",
                    "t",
                    "owner_subscribed",
                    "i",
                    "d",
                    "tl",
                    "py",
                    "qc"
                }, OnBroadcastSubscriptionData);

                return;
            }

            Library.Remora.JoinControlChannels();
        }
예제 #8
0
            public async Task <SetCategoryDetailsVm> Handle(SetCategoryDetailsCommand request, CancellationToken cancellationToken)
            {
                Category category = await _context.Category
                                    .SingleOrDefaultAsync(x => x.CategoryGuid == request.Command.CategoryGuid, cancellationToken);

                if (category == null)
                {
                    return new SetCategoryDetailsVm
                           {
                               Message = "دسته بندی مورد نظر یافت نشد",
                               State   = (int)SetCategoryDetailsState.CategoryNotFound
                           }
                }
                ;

                if (!string.IsNullOrEmpty(request.Command.CoverDocumentGuid))
                {
                    Document coverDocument = await _context.Document
                                             .FirstOrDefaultAsync(x => x.DocumentGuid == Guid.Parse(request.Command.CoverDocumentGuid), cancellationToken);

                    if (coverDocument == null)
                    {
                        return new SetCategoryDetailsVm()
                               {
                                   Message = "تصویر کاور مورد نظر یافت نشد",
                                   State   = (int)SetCategoryDetailsState.CoverDocumentNotFound
                               }
                    }
                    ;

                    if (category.CoverDocumentId != coverDocument.DocumentId)
                    {
                        Document oldDocument = await _context.Document
                                               .FirstOrDefaultAsync(x => x.DocumentId == category.CoverDocumentId, cancellationToken);

                        if (oldDocument != null)
                        {
                            int    uploadsIndex = oldDocument.Path.IndexOf("Uploads");
                            string documentPath = Path.Combine(Directory.GetCurrentDirectory(),
                                                               request.WebRootPath,
                                                               oldDocument.Path.Substring(uploadsIndex));

                            if (File.Exists(documentPath))
                            {
                                File.Delete(documentPath);
                            }

                            _context.Document.Remove(oldDocument);
                        }

                        category.CoverDocumentId = coverDocument.DocumentId;
                    }
                }

                if (!string.IsNullOrEmpty(request.Command.ActiveIconDocumentGuid))
                {
                    Document activeIconDocument = await _context.Document
                                                  .FirstOrDefaultAsync(x => x.DocumentGuid == Guid.Parse(request.Command.ActiveIconDocumentGuid), cancellationToken);

                    if (activeIconDocument == null)
                    {
                        return new SetCategoryDetailsVm()
                               {
                                   Message = "تصویر آیکون فعال مورد نظر یافت نشد",
                                   State   = (int)SetCategoryDetailsState.CoverDocumentNotFound
                               }
                    }
                    ;

                    if (category.ActiveIconDocumentId != activeIconDocument.DocumentId)
                    {
                        Document oldDocument = await _context.Document
                                               .FirstOrDefaultAsync(x => x.DocumentId == category.ActiveIconDocumentId, cancellationToken);

                        if (oldDocument != null)
                        {
                            int    uploadsIndex = oldDocument.Path.IndexOf("Uploads");
                            string documentPath = Path.Combine(Directory.GetCurrentDirectory(),
                                                               request.WebRootPath,
                                                               oldDocument.Path.Substring(uploadsIndex));

                            if (File.Exists(documentPath))
                            {
                                File.Delete(documentPath);
                            }

                            _context.Document.Remove(oldDocument);
                        }

                        category.ActiveIconDocumentId = activeIconDocument.DocumentId;
                    }
                }

                if (!string.IsNullOrEmpty(request.Command.InactiveIconDocumentGuid))
                {
                    Document inactiveIconDocument = await _context.Document
                                                    .FirstOrDefaultAsync(x => x.DocumentGuid == Guid.Parse(request.Command.InactiveIconDocumentGuid), cancellationToken);

                    if (inactiveIconDocument == null)
                    {
                        return new SetCategoryDetailsVm()
                               {
                                   Message = "تصویر آیکون غیرفعال مورد نظر یافت نشد",
                                   State   = (int)SetCategoryDetailsState.CoverDocumentNotFound
                               }
                    }
                    ;

                    if (category.InactiveIconDocumentId != inactiveIconDocument.DocumentId)
                    {
                        Document oldDocument = await _context.Document
                                               .FirstOrDefaultAsync(x => x.DocumentId == category.InactiveIconDocumentId, cancellationToken);

                        if (oldDocument != null)
                        {
                            int    uploadsIndex = oldDocument.Path.IndexOf("Uploads");
                            string documentPath = Path.Combine(Directory.GetCurrentDirectory(),
                                                               request.WebRootPath,
                                                               oldDocument.Path.Substring(uploadsIndex));

                            if (File.Exists(documentPath))
                            {
                                File.Delete(documentPath);
                            }

                            _context.Document.Remove(oldDocument);
                        }

                        category.InactiveIconDocumentId = inactiveIconDocument.DocumentId;
                    }
                }

                if (!string.IsNullOrEmpty(request.Command.QuadMenuDocumentGuid))
                {
                    Document quadMenuDocument = await _context.Document
                                                .FirstOrDefaultAsync(x => x.DocumentGuid == Guid.Parse(request.Command.QuadMenuDocumentGuid), cancellationToken);

                    if (quadMenuDocument == null)
                    {
                        return new SetCategoryDetailsVm()
                               {
                                   Message = "تصویر فهرست چرخشی مورد نظر یافت نشد",
                                   State   = (int)SetCategoryDetailsState.CoverDocumentNotFound
                               }
                    }
                    ;

                    if (category.QuadMenuDocumentId != quadMenuDocument.DocumentId)
                    {
                        Document oldDocument = await _context.Document
                                               .FirstOrDefaultAsync(x => x.DocumentId == category.QuadMenuDocumentId, cancellationToken);

                        if (oldDocument != null)
                        {
                            int    uploadsIndex = oldDocument.Path.IndexOf("Uploads");
                            string documentPath = Path.Combine(Directory.GetCurrentDirectory(),
                                                               request.WebRootPath,
                                                               oldDocument.Path.Substring(uploadsIndex));

                            if (File.Exists(documentPath))
                            {
                                File.Delete(documentPath);
                            }

                            _context.Document.Remove(oldDocument);
                        }

                        category.QuadMenuDocumentId = quadMenuDocument.DocumentId;
                    }
                }

                category.Abstract     = request.Command.Abstract;
                category.Description  = request.Command.Description;
                category.ModifiedDate = DateTime.Now;

                List <CategoryTag> categoryTags = await _context.CategoryTag
                                                  .Where(x => x.CategoryId == category.CategoryId)
                                                  .ToListAsync(cancellationToken);

                foreach (var oldCategory in categoryTags)
                {
                    _context.CategoryTag.Remove(oldCategory);
                }

                if (request.Command.Tags != null)
                {
                    CategoryTag categoryTag;

                    foreach (string tag in request.Command.Tags)
                    {
                        Guid.TryParse(tag, out Guid guid);

                        if (guid == Guid.Empty)
                        {
                            Tag newTag = new Tag()
                            {
                                Name = tag
                            };

                            _context.Tag.Add(newTag);

                            categoryTag = new CategoryTag()
                            {
                                CategoryId = category.CategoryId
                            };

                            categoryTag.Tag = newTag;
                        }
                        else
                        {
                            Tag availableTeg = await _context.Tag
                                               .Where(x => x.TagGuid == Guid.Parse(tag))
                                               .SingleOrDefaultAsync(cancellationToken);

                            if (availableTeg == null)
                            {
                                continue;
                            }

                            categoryTag = new CategoryTag()
                            {
                                CategoryId = category.CategoryId,
                                TagId      = availableTeg.TagId
                            };
                        }

                        _context.CategoryTag.Add(categoryTag);
                    }
                }

                await _context.SaveChangesAsync(cancellationToken);

                return(new SetCategoryDetailsVm()
                {
                    Message = "عملیات موفق آمیز",
                    State = (int)SetCategoryDetailsState.Success
                });
            }
        }
    }
}