public void Create(KnowledgeRateDTO item)
        {
            if (item == null)
            {
                throw new ValidationException("Item is not Valid", "");
            }

            var sameItemFromDb = Database.Rates.Find(
                x => x.UserId == item.UserId &&
                x.KnowledgeId == item.KnowledgeId).FirstOrDefault();

            if (sameItemFromDb != null)
            {
                throw new ValidationException("The same item is already exist", "");
            }

            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <KnowledgeRateDTO, KnowledgeRate>()).CreateMapper();
            var rate   = mapper.Map <KnowledgeRateDTO, KnowledgeRate>(item);

            Database.Rates.Create(rate);
            Database.Save();
        }
        public void Update(int id, KnowledgeRateDTO item)
        {
            if (item == null)
            {
                throw new ValidationException("Item is not Valid", "");
            }

            var itemToUpdate = Database.Rates.Get(id);

            if (itemToUpdate == null)
            {
                throw new ValidationException("Rate is not found", "");
            }

            itemToUpdate.Rate        = item.Rate;
            itemToUpdate.KnowledgeId = item.KnowledgeId;
            itemToUpdate.Knowledge   = Database.Knowledges.Get(item.KnowledgeId);
            itemToUpdate.UserId      = item.UserId;
            itemToUpdate.User        = Database.Users.Get(item.UserId);

            Database.Rates.Update(itemToUpdate);
            Database.Save();
        }