/// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Id"></param> /// <param name="item"></param> /// <param name="activeTransaction"></param> /// <returns></returns> public HttpResponseMessage GenericPut <T>(int Id, T item, IDbTransaction activeTransaction = null) where T : class { HttpResponseMessage response; // descobrir campo chave e saber valor // se o valor do parametro nao for igual ao do campo chave // é erro, logo nem avança if (DatabaseHelpers.GetKeyValueOf(item) != Id) { ApiStatusResponse errorResponse = new ApiStatusResponse() { Code = "101", Detail = "Está a tentar executar a actulização de um objecto, mas tem incomsistência entre a chave do objecto e o ID do Uri", Title = "Uri Inválido", Type = "error" }; response = Controller.Request.CreateResponse(HttpStatusCode.BadRequest, errorResponse); } else { DbTable <T> tblData = new DbTable <T>(DBContext, UserID); try { var itemIns = tblData.Update(item, activeTransaction); tblData = null; if (itemIns == null) { // não update, mas não deu erro... portanto elemento não existe ApiStatusResponse errorResponse = new ApiStatusResponse() { Code = "102", Detail = "Está a tentar executar a actulização de um objecto, mas o objecto não existe", Title = "Operação Inválida", Type = "error" }; response = Controller.Request.CreateResponse(HttpStatusCode.NotFound, errorResponse); } else { ApiDataResponse res = new ApiDataResponse(); res.data = item; res.recordsaffected = 1; response = Controller.Request.CreateResponse <ApiDataResponse>(HttpStatusCode.OK, res); // Erro no parametro request //UrlHelper url = new UrlHelper(); //string uri = url.Link("DefaultApi", new { id = Id }); //response.Headers.Location = new Uri(uri); } } catch (Exception ex) { tblData = null; response = DefaultControllerException(Controller.Request, ex); } tblData = null; } return(response); }