/// <summary>
        /// Function that will return offers based on the study id supplied.
        /// If StudyId is null, it will fetch all the offers from the database and return them
        /// </summary>
        /// <param name="Request"></param>
        /// <param name="StudyId"></param>
        /// <param name="ApiUser"></param>
        /// <returns></returns>
        public OffersStudyIdDataObject GetOffersBySudyId(HttpRequestMessage Request, string StudyId, string ApiUser)
        {
            LoggingUtility log = LoggerFactory.GetLogger();
            OffersStudyIdDataObject data = new OffersStudyIdDataObject();
            String requestId = Request.Properties["requestId"].ToString();
            Dictionary<string, string> parameters = new Dictionary<string, string>();
            string OperationName = operationName.GetOffersByStudyId.ToString();
            int sid;
            try
            {
                parameters.Add("StudyId", StudyId);
                bool isNumeric = Int32.TryParse(StudyId, out sid);
                if (StudyId == null || isNumeric)
                {
                    data.Offers = OfferRepository().SelectByStudyId(StudyId).ToList();
                    if (StudyId == null && data.Offers.Count == 0)
                    {
                        data.Errors.Add(new ErrorObject(ErrorKey.ERR_INTERNAL_API_NO_OFFERS, parameters));
                    }
                    else if (data.Offers.Count == 0)
                    {
                        data.Errors.Add(new ErrorObject(ErrorKey.ERR_INTERNAL_API_INVALID_STUDY, parameters));
                    }
                }
                else if (StudyId != null && !isNumeric)
                {
                    data.Errors.Add(new ErrorObject(ErrorKey.ERR_INTERNAL_API_INVALID_STUDY, parameters));
                }
            }

            catch (Exception e)
            {
                data.Errors.Add(new ErrorObject(ErrorKey.ERR_INTERNAL_FATAL));
                log.InfoJson(new Methods().Exception_ToLogObject(requestId, ApiUser, OperationType, OperationName, e));
            }
            finally
            {
                if (data.Errors.Count != 0)
                {
                    log.InfoJson(new Methods().Error_ToLogObject(requestId, ApiUser, OperationType, OperationName, parameters, data.Errors));
                    log.ProcessingDebug(requestId, OperationName + " request was unsuccessful.");
                }

                //The response has no errors, we insert a request successful message into the logs
                else
                {
                    log.InfoJson(new Methods().Response_ToLogObject(requestId, ApiUser, OperationType, OperationName, parameters, data));
                    log.ProcessingDebug(requestId, OperationName + " request was successful.");
                }
            }
            return data;
        }
 public OffersStudyIdResponse(string RequestId, bool status = false)
 {
     this.Status = status;
     this.Data = new OffersStudyIdDataObject();
     this.Meta = new MetaDataObject(RequestId);
 }