/// <summary>
        /// Method updates the expense record
        /// </summary>
        /// <param name="userId">User identifier</param>
        /// <param name="expenseRecordId">Expense record identifier. By this identifier we will find record for changing</param>
        /// <param name="description">Description for expense record</param>
        /// <param name="price">Price</param>
        /// <param name="tagId">Tag identifier for expense record</param>
        /// <param name="dateStamp">Date stamp which shows when money were spent</param>
        /// <returns></returns>
        public Response Edit(int userId, int expenseRecordId, string description, decimal price, int tagId, DateTime? dateStamp)
        {
            var response = new Response();
            if (HasUserAccess(userId, expenseRecordId))
            {
                if (string.IsNullOrEmpty(description) || price == 0 || tagId == 0 || dateStamp == null)
                {
                    response.IsError = true;
                    response.Errors.Add(Error.ExpenseRecordHasNotBeenSet);
                }
                else
                {
                    var expenseRecord = GetById(userId, expenseRecordId).Object;
                    var tagRepository = new TagRepository(context);
                    expenseRecord.Tag = tagRepository.GetById(userId, tagId).Object;
                    expenseRecord.Description = description;
                    expenseRecord.Price = price;
                    expenseRecord.DateStamp = (DateTime)dateStamp;
                    context.Save();
                }
            }
            else
            {
                response.IsError = true;
                response.Errors.Add(Error.UserDoesNotHaveAccess);
            }

            return response;
        }
 /// <summary>
 /// Get expense records by choosen tag
 /// </summary>
 /// <param name="userId">User identifier</param>
 /// <param name="tagId">Tag identifier</param>
 /// <returns>List of expense records which is in response object</returns>
 public GetObjectResponse<List<ExpenseRecord>> GetExpenseRecordsByTag(int userId, int tagId)
 {
     var response = new GetObjectResponse<List<ExpenseRecord>>();
     
     var tagRepository = new TagRepository(context);
     
     if (tagRepository.HasUserAccess(userId, tagId))
     {
         response.Object = tagRepository.GetById(userId, tagId).Object.ExpenseRecords.ToList();
     }
     else
     {
         response.IsError = true;
         response.Errors.Add(Error.UserDoesNotHaveAccess);
     }
     return response;
 }
        /// <summary>
        /// Add expense record to the system
        /// </summary>
        /// <param name="userId">User identifier</param>
        /// <param name="description">Description for expense record</param>
        /// <param name="price">Price</param>
        /// <param name="tagId">Tag identifier for expense record</param>
        /// <param name="dateStamp">Date stamp which shows when money were spent</param>
        /// <returns>Executin result as Response object</returns>
        public Response Add(int userId, string description, decimal price, int tagId, DateTime? dateStamp)
        {
            var response = new AddResponse();

            if (string.IsNullOrEmpty(description) || price == 0 || tagId == 0 || dateStamp == null)
            {
                response.IsError = true;
                response.Errors.Add(Error.ExpenseRecordHasNotBeenSet);
            }
            else
            {
                var expenseRecord = new ExpenseRecord();
                var tagRepository = new TagRepository(context);
                expenseRecord.Tag = tagRepository.GetById(userId, tagId).Object;
                expenseRecord.Description = description;
                expenseRecord.Price = price;
                expenseRecord.DateStamp = (DateTime)dateStamp;
                response = Add(userId, expenseRecord);
            }
            return response;
        }