public async Task <Requirement> EditModelAsync(
            string authToken, Action <Exception> exceptionHandler, int modelId)
        {
            var isNew = modelId < 1;

            if (isNew)
            {
                throw new NotSupportedException(
                          "Trying to edit a new model! Use the store method instead.");
            }
            var uri = $"{typeof(Requirement).NameToUriFormat()}/{modelId}/edit";
            IResponseRootObject response = null;

            try
            {
                response = await _httpDataServiceFacade.HttpRequestAsync(uri, authToken);
            }
            catch (Exception ex)
            {
                exceptionHandler(ex);
                response = new ResponseRootObject(ex.Message);
            }
            var model = new ResponseRootObjectToModelMapper <Requirement>(response).Mapped();

            return(model);
        }
示例#2
0
        private static void EmulateEditLocking(
            string url, API.Constants.HttpMethods httpMethod, ref IResponseRootObject responseRootObject)
        {
            if (responseRootObject is null)
            {
                throw new ArgumentNullException(nameof(responseRootObject));
            }
            if (httpMethod == API.Constants.HttpMethods.Get &&
                (url.EndsWith("edit") || url.Contains("create")))
            {
                foreach (var dto in responseRootObject.Data)
                {
                    var prop = typeof(DataTransferObject).GetProperty(
                        "Fields", BindingFlags.NonPublic | BindingFlags.Instance);
                    var fields = (IDictionary <string, object>)prop.GetValue(dto);

                    var key = "IsLockedForEditing";
                    if (fields.ContainsKey(key))
                    {
                        fields[key] = true;
                    }
                    else
                    {
                        fields.Add(key, true);
                    }
                }
            }
        }
        public async Task <Requirement> CreateModelAsync(
            string authToken, Action <Exception> exceptionHandler)
        {
            var uri = $"{typeof(Requirement).NameToUriFormat()}/create";
            IResponseRootObject response = null;

            try
            {
                response = await _httpDataServiceFacade.HttpRequestAsync(
                    uri, User.Current.AuthToken);
            }
            catch (Exception ex)
            {
                exceptionHandler(ex);
                response = new ResponseRootObject(ex.Message);
            }
            var model = new ResponseRootObjectToModelMapper <Requirement>(response).Mapped();

            return(model);
        }
        public async Task <IEnumerable <Requirement> > GetModelDataAsync(
            string authToken, Action <Exception> exceptionHandler)
        {
            var uri = typeof(Requirement).NameToUriFormat();

            IResponseRootObject response = null;

            try
            {
                response = await SimpleIoc.Default.GetInstance <IHttpDataServiceFacade>()
                           .HttpRequestAsync(uri, authToken);
            }
            catch (Exception ex)
            {
                exceptionHandler(ex);
                response = new ResponseRootObject(ex.Message);
            }
            var index = new ResponseRootObjectToModelMapper <Requirement>(response).AllMapped();

            index = await Decorate(index, exceptionHandler);

            return(index);
        }
        public async Task <bool> DeleteModelAsync(
            string authToken, Action <Exception> exceptionHandler, Requirement model)
        {
            if (model.IsNew)
            {
                throw new ArgumentException("Trying to delete a new model!", nameof(model));
            }
            var uri  = $"{typeof(Requirement).NameToUriFormat()}/{model.Id}";
            var data = model.GetData();
            IResponseRootObject response = null;

            try
            {
                response = await _httpDataServiceFacade.HttpRequestAsync(
                    uri, User.Current.AuthToken, HttpMethods.Delete, null);
            }
            catch (Exception ex)
            {
                exceptionHandler(ex);
                response = new ResponseRootObject(ex.Message);
            }
            return(response.Success);
        }
        public async Task <Requirement> StoreModelAsync(
            string authToken, Action <Exception> exceptionHandler, Requirement model)
        {
            if (!model.IsNew)
            {
                throw new ArgumentException("Trying to store an existing model!", nameof(model));
            }
            var uri  = typeof(Requirement).NameToUriFormat();
            var data = model.GetData();
            IResponseRootObject response = null;

            try
            {
                response = await _httpDataServiceFacade.HttpRequestAsync(
                    uri, User.Current.AuthToken, HttpMethods.Post, data);
            }
            catch (Exception ex)
            {
                exceptionHandler(ex);
                response = new ResponseRootObject(ex.Message);
            }
            model = new ResponseRootObjectToModelMapper <Requirement>(response).Mapped();
            return(model);
        }
示例#7
0
 public Lookup(string lookupName, IResponseRootObject response)
     : this(lookupName, response?.Data)
 {
 }