diff --git a/server/AyaNova/Controllers/WidgetController.cs b/server/AyaNova/Controllers/WidgetController.cs index 9f74f475..1945719e 100644 --- a/server/AyaNova/Controllers/WidgetController.cs +++ b/server/AyaNova/Controllers/WidgetController.cs @@ -46,36 +46,6 @@ namespace AyaNova.Api.Controllers serverState = apiServerState; } - // /// - // /// Create widget - // /// - // /// - // /// From route path - // /// - // [HttpPost] - // public async Task PostWidget([FromBody] Widget newObject, ApiVersion apiVersion) - // { - // if (!serverState.IsOpen) - // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - - // //Instantiate the business object handler - // WidgetBiz biz = WidgetBiz.GetBiz(ct, HttpContext); - - // //If a user has change roles - // if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType)) - // return StatusCode(403, new ApiNotAuthorizedResponse()); - - // if (!ModelState.IsValid) - // return BadRequest(new ApiErrorResponse(ModelState)); - - // //Create and validate - // Widget o = await biz.CreateAsync(newObject); - // if (o == null) - // return BadRequest(new ApiErrorResponse(biz.Errors)); - // else - // return CreatedAtAction(nameof(WidgetController.GetWidget), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); - // } - /// /// Create Widget /// @@ -99,42 +69,6 @@ namespace AyaNova.Api.Controllers return CreatedAtAction(nameof(WidgetController.GetWidget), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } - - // /// - // /// Duplicate widget - // /// - // /// Create a duplicate of this items id - // /// From route path - // /// - // [HttpPost("duplicate/{id}")] - // public async Task DuplicateWidget([FromRoute] long id, ApiVersion apiVersion) - // { - // if (!serverState.IsOpen) - // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - - // //Instantiate the business object handler - // WidgetBiz biz = WidgetBiz.GetBiz(ct, HttpContext); - - // //If a user has change roles - // if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType)) - // return StatusCode(403, new ApiNotAuthorizedResponse()); - - // if (!ModelState.IsValid) - // return BadRequest(new ApiErrorResponse(ModelState)); - - // var oSrc = await biz.GetAsync(id, false); - // if (oSrc == null) - // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - - // //Create and validate - // Widget o = await biz.DuplicateAsync(oSrc); - // if (o == null) - // return BadRequest(new ApiErrorResponse(biz.Errors)); - // else - // return CreatedAtAction(nameof(WidgetController.GetWidget), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); - - // } - /// /// Duplicate Widget /// (Wiki and Attachments are not duplicated) @@ -159,37 +93,6 @@ namespace AyaNova.Api.Controllers return CreatedAtAction(nameof(WidgetController.GetWidget), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); } - - // /// - // /// Get full widget object - // /// - // /// - // /// A single widget - // [HttpGet("{id}")] - // public async Task GetWidget([FromRoute] long id) - // { - // if (!serverState.IsOpen) - // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - - // //Instantiate the business object handler - // WidgetBiz biz = WidgetBiz.GetBiz(ct, HttpContext); - - // //NOTE: This is the first check and often the only check but in some cases with some objects this will also need to check biz object rules - // if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType)) - // return StatusCode(403, new ApiNotAuthorizedResponse()); - - // if (!ModelState.IsValid) - // return BadRequest(new ApiErrorResponse(ModelState)); - - // var o = await biz.GetAsync(id); - // if (o == null) - // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - - // // NOTE: HERE would be the second check of biz rules before returning the object - // // in cases where there is also a business rule to affect retrieval on top of basic rights - - // return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType))); - // } /// /// Get Widget /// @@ -209,47 +112,7 @@ namespace AyaNova.Api.Controllers if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType))); } - - // /// - // /// Put (update) widget - // /// - // /// - // /// - // /// - // [HttpPut("{id}")] - // public async Task PutWidget([FromRoute] long id, [FromBody] Widget inObj) - // { - // if (!serverState.IsOpen) - // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - - // if (!ModelState.IsValid) - // return BadRequest(new ApiErrorResponse(ModelState)); - - // //Instantiate the business object handler - // WidgetBiz biz = WidgetBiz.GetBiz(ct, HttpContext); - - // var o = await biz.GetAsync(id, false); - // if (o == null) - // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - - // if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) - // return StatusCode(403, new ApiNotAuthorizedResponse()); - - // try - // { - // if (!await biz.PutAsync(o, inObj)) - // return BadRequest(new ApiErrorResponse(biz.Errors)); - // } - // catch (DbUpdateConcurrencyException) - // { - // if (!await biz.ExistsAsync(id)) - // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - // else - // return StatusCode(409, new ApiErrorResponse(ApiErrorCode.CONCURRENCY_CONFLICT)); - // } - // return Ok(ApiOkResponse.Response(new { Concurrency = o.Concurrency }, true)); - // } - + /// /// Put (update) Widget /// @@ -276,37 +139,6 @@ namespace AyaNova.Api.Controllers return Ok(ApiOkResponse.Response(new { Concurrency = o.Concurrency }, true)); ; } - - // /// - // /// Delete widget - // /// - // /// - // /// Ok - // [HttpDelete("{id}")] - // public async Task DeleteWidget([FromRoute] long id) - // { - // if (!serverState.IsOpen) - // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - - // if (!ModelState.IsValid) - // return BadRequest(new ApiErrorResponse(ModelState)); - - // //Instantiate the business object handler - // WidgetBiz biz = WidgetBiz.GetBiz(ct, HttpContext); - - // var o = await biz.GetAsync(id, false); - // if (o == null) - // return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); - - // if (!Authorized.HasDeleteRole(HttpContext.Items, biz.BizType)) - // return StatusCode(403, new ApiNotAuthorizedResponse()); - - // if (!await biz.DeleteAsync(o)) - // return BadRequest(new ApiErrorResponse(biz.Errors)); - - // return NoContent(); - // } - /// /// Delete Widget /// @@ -327,10 +159,11 @@ namespace AyaNova.Api.Controllers return NoContent(); } - + /////////////////////////////////////////////// //TEST ROUTES // + /// /// Get route that triggers exception for testing /// diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index a228ec73..174ea52f 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -55,45 +55,6 @@ namespace AyaNova.Biz } } - // //////////////////////////////////////////////////////////////////////////////////////////////// - // //DUPLICATE - // // - // internal async Task DuplicateAsync(Widget dbObj) - // { - - // Widget outObj = new Widget(); - // CopyObject.Copy(dbObj, outObj, "Wiki"); - // // outObj.Name = Util.StringUtil.NameUniquify(outObj.Name, 255); - // //generate unique name - // string newUniqueName = string.Empty; - // bool NotUnique = true; - // long l = 1; - // do - // { - // newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255); - // NotUnique = await ct.Widget.AnyAsync(m => m.Name == newUniqueName); - // } while (NotUnique); - - // outObj.Name = newUniqueName; - - - // outObj.Id = 0; - // outObj.Concurrency = 0; - - // //Test get serial id visible id number from generator - // outObj.Serial = ServerBootConfig.WIDGET_SERIAL.GetNext(); - - // await ct.Widget.AddAsync(outObj); - // await ct.SaveChangesAsync(); - - // //Handle child and associated items: - // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct); - // await SearchIndexAsync(outObj, true); - // await TagUtil.ProcessUpdateTagsInRepositoryAsync(ct, outObj.Tags, null); - // return outObj; - - // } - //////////////////////////////////////////////////////////////////////////////////////////////// //DUPLICATE // @@ -137,42 +98,7 @@ namespace AyaNova.Biz await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); return ret; } - - // //////////////////////////////////////////////////////////////////////////////////////////////// - // //UPDATE - // // - - // //put - // internal async Task PutAsync(Widget dbObj, Widget inObj) - // { - - // //make a snapshot of the original for validation but update the original to preserve workflow - // Widget SnapshotOfOriginalDBObj = new Widget(); - // CopyObject.Copy(dbObj, SnapshotOfOriginalDBObj); - - // //Replace the db object with the PUT object - // CopyObject.Copy(inObj, dbObj, "Id,Serial"); - - // dbObj.Tags = TagUtil.NormalizeTags(dbObj.Tags); - // dbObj.CustomFields = JsonUtil.CompactJson(dbObj.CustomFields); - - // //Set "original" value of concurrency token to input token - // //this will allow EF to check it out - // ct.Entry(dbObj).OriginalValues["Concurrency"] = inObj.Concurrency; - - - // await ValidateAsync(dbObj, SnapshotOfOriginalDBObj); - // if (HasErrors) - // return false; - - // //Log event and save context - // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct); - // await SearchIndexAsync(dbObj, false); - // await TagUtil.ProcessUpdateTagsInRepositoryAsync(ct, dbObj.Tags, SnapshotOfOriginalDBObj.Tags); - - // return true; - // } - + //////////////////////////////////////////////////////////////////////////////////////////////// //UPDATE // @@ -210,27 +136,6 @@ namespace AyaNova.Biz return dbObject; } - // //////////////////////////////////////////////////////////////////////////////////////////////// - // //DELETE - // // - // internal async Task DeleteAsync(Widget dbObj) - // { - // //Determine if the object can be deleted, do the deletion tentatively - // //Probably also in here deal with tags and associated search text etc - - // //NOT REQUIRED NOW BUT IF IN FUTURE ValidateCanDelete(dbObj); - // if (HasErrors) - // return false; - // ct.Widget.Remove(dbObj); - // await ct.SaveChangesAsync(); - - // //Log event - // await EventLogProcessor.DeleteObjectLogAsync(UserId, BizType, dbObj.Id, dbObj.Name, ct); - // await Search.ProcessDeletedObjectKeywordsAsync(dbObj.Id, BizType); - // await TagUtil.ProcessDeleteTagsInRepositoryAsync(ct, dbObj.Tags); - // return true; - // } - //////////////////////////////////////////////////////////////////////////////////////////////// //DELETE //