private static void databaseOperationWithIdea(ResponseBase response, int UserID,
                                                      Func <IIdeaDatabaseDataContext, IQueryUtils, Idea> GetIdea,
                                                      Relation r, Action <IIdeaDatabaseDataContext, IQueryUtils, Idea> t, bool readOnly, Fault notFoundFault)
        {
            basicDatabaseOperation(response,
                                   () =>
            {
                IIdeaDatabaseDataContext context;
                if (readOnly == true)
                {
                    context = DependencyInjector.Get <IIdeaDatabaseDataContext, IdeaDatabaseReadOnly>();
                }
                else
                {
                    context = DependencyInjector.Get <IIdeaDatabaseDataContext, IdeaDatabaseReadWrite>();
                }

                IQueryUtils query = DependencyInjector.Get <IQueryUtils, QueryUtils>();

                //check if idea is registered for the user
                Idea idea = GetIdea(context, query);
                if (idea == null)
                {
                    response.ErrorList.Add(notFoundFault);
                    return;
                }
                t(context, query, idea);
            }
                                   );
        }
        public static void databaseOperation(ResponseBase response, Action <IIdeaDatabaseDataContext, IQueryUtils> t,
                                             bool readOnly)
        {
            string methodName = null;


            basicDatabaseOperation(response,
                                   () =>
            {
                IIdeaDatabaseDataContext context;
                if (readOnly == true)
                {
                    context = DependencyInjector.Get <IIdeaDatabaseDataContext, IdeaDatabaseReadOnly>();
                }
                else
                {
                    context = DependencyInjector.Get <IIdeaDatabaseDataContext, IdeaDatabaseReadWrite>();
                }
                IQueryUtils query = DependencyInjector.Get <IQueryUtils, QueryUtils>();
                t(context, query);
            },
                                   methodName
                                   );
        }