public Card EditCard(EditedCard edittedCard)
        {
            var parentCard = _cardContext.Card.Where(d => d.Id == edittedCard.Id && d.Version == edittedCard.Version).FirstOrDefault();

            if (parentCard == null)
            {
                throw new ArgumentException("Edit operation can not be performd as the card doesnt exist");
            }

            int version    = _cardContext.Card.Where(d => d.Id == edittedCard.Id).Max(v => v.Version) + 1;
            var clonedCard = new Card(parentCard, version)
            {
                Title        = edittedCard.Title,
                Description  = edittedCard.Description,
                ImageContent = edittedCard.ImageContent,
                Favicon      = edittedCard.Favicon,
            };

            _cardContext.Card.Add(clonedCard);
            _cardContext.SaveChanges();

            _logger.LogInformation("Raising a cardEdited event");
            _cardEventHandler.Raise(new CardEditedEvent(clonedCard, parentCard.Version));
            return(clonedCard);
        }
        public ActionResult <Card> EditCard([FromBody] EditedCard card)
        {
            _logger.LogInformation("Edit of card {id} initiated", card.Id);

            var editedCard = _cardOperations.EditCard(card);

            if (editedCard == null)
            {
                return(NotFound());
            }
            return(Ok(editedCard));
        }