Example #1
0
        public async Task <ServiceModels.ServiceResponse> MergeBoard(InputModels.MergeInput input)
        {
            var serviceResponse = new ServiceModels.ServiceResponse();

            var fromBoard = (await Records()).FirstOrDefault(b => b.Id == input.FromId);
            var toBoard   = (await Records()).FirstOrDefault(b => b.Id == input.ToId);

            if (fromBoard is null)
            {
                serviceResponse.Error($"A record does not exist with ID '{input.FromId}'");
            }

            if (toBoard is null)
            {
                serviceResponse.Error($"A record does not exist with ID '{input.ToId}'");
            }

            if (!serviceResponse.Success)
            {
                return(serviceResponse);
            }

            var topicBoards = DbContext.TopicBoards.Where(m => m.BoardId == fromBoard.Id).ToList();

            // Reassign messages to new board
            foreach (var topicBoard in topicBoards)
            {
                topicBoard.BoardId = toBoard.Id;
                DbContext.Update(topicBoard);
            }

            DbContext.SaveChanges();

            var categoryId = fromBoard.CategoryId;

            // Delete the board
            DbContext.Boards.Remove(fromBoard);

            DbContext.SaveChanges();

            // Remove the category if empty
            if (!DbContext.Boards.Any(b => b.CategoryId == categoryId))
            {
                var categoryRecord = (await Categories()).FirstOrDefault(item => item.Id == categoryId);

                if (categoryRecord != null)
                {
                    DbContext.Categories.Remove(categoryRecord);
                    DbContext.SaveChanges();
                }
            }

            return(serviceResponse);
        }
Example #2
0
        public async Task <IActionResult> MergeBoard(InputModels.MergeInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await BoardRepository.MergeBoard(input);

                return(await ForumViewResult.RedirectFromService(this, serviceResponse));
            }

            return(ForumViewResult.RedirectToReferrer(this));
        }
Example #3
0
        public async Task <IActionResult> MergeCategory(InputModels.MergeInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = await BoardRepository.MergeCategory(input);

                return(await this.RedirectFromService(serviceResponse));
            }

            return(this.RedirectToReferrer());
        }
Example #4
0
        public async Task <IActionResult> MergeBoard(InputModels.MergeInput input)
        {
            if (ModelState.IsValid)
            {
                var serviceResponse = BoardRepository.MergeBoard(input);
                return(await ForumViewResult.RedirectFromService(this, serviceResponse, FailureCallback));
            }

            return(await FailureCallback());

            async Task <IActionResult> FailureCallback()
            {
                return(await Task.Run(() => { return ForumViewResult.RedirectToReferrer(this); }));
            }
        }
Example #5
0
        public async Task <ServiceModels.ServiceResponse> MergeCategory(InputModels.MergeInput input)
        {
            var serviceResponse = new ServiceModels.ServiceResponse();

            var fromCategory = (await Categories()).FirstOrDefault(b => b.Id == input.FromId);
            var toCategory   = (await Categories()).FirstOrDefault(b => b.Id == input.ToId);

            if (fromCategory is null)
            {
                serviceResponse.Error($"A record does not exist with ID '{input.FromId}'");
            }

            if (toCategory is null)
            {
                serviceResponse.Error($"A record does not exist with ID '{input.ToId}'");
            }

            if (!serviceResponse.Success)
            {
                return(serviceResponse);
            }

            var displacedBoards = (await Records()).Where(b => b.CategoryId == fromCategory.Id).ToList();

            foreach (var displacedBoard in displacedBoards)
            {
                displacedBoard.CategoryId = toCategory.Id;
                DbContext.Update(displacedBoard);
            }

            DbContext.SaveChanges();

            DbContext.Categories.Remove(fromCategory);

            DbContext.SaveChanges();

            return(serviceResponse);
        }