public async Task <IActionResult> EditPage([FromRoute] int id, [FromBody] PageCreateEditRequest updatedPageData, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var originalPage = await _mediator.Send(new GetPageByIdRequest(id), cancellationToken);

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

            var pagesWithTheSameDate = await _mediator.Send(new GetPagesByExactDateRequest(updatedPageData.Date), cancellationToken);

            var pageHasChanges   = originalPage.Date != updatedPageData.Date;
            var pageCanBeUpdated = !pageHasChanges || (pageHasChanges && !pagesWithTheSameDate.Any());

            if (!pageCanBeUpdated)
            {
                ModelState.AddModelError(nameof(updatedPageData.Date), $"Page with date '${updatedPageData.Date.ToShortDateString()}' already exists");
                return(BadRequest(ModelState));
            }

            originalPage = _mapper.Map(updatedPageData, originalPage);
            await _mediator.Send(new EditPageRequest(originalPage), cancellationToken);

            return(Ok());
        }
        public async Task <IActionResult> CreatePage([FromBody] PageCreateEditRequest pageData, CancellationToken cancellationToken)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var pagesWithTheSameDate = await _mediator.Send(new GetPagesByExactDateRequest(pageData.Date), cancellationToken);

            if (pagesWithTheSameDate.Any())
            {
                ModelState.AddModelError(nameof(pageData.Date), $"Page with date '${pageData.Date.ToShortDateString()}' already exists");
                return(BadRequest(ModelState));
            }

            var page        = _mapper.Map <Page>(pageData);
            var createdPage = await _mediator.Send(new CreatePageRequest(page), cancellationToken);

            return(Ok(createdPage.Id));
        }