diff --git a/server/AyaNova/Controllers/ReminderController.cs b/server/AyaNova/Controllers/ReminderController.cs
index 3c30bae2..7b6faa5c 100644
--- a/server/AyaNova/Controllers/ReminderController.cs
+++ b/server/AyaNova/Controllers/ReminderController.cs
@@ -59,29 +59,6 @@ namespace AyaNova.Api.Controllers
return CreatedAtAction(nameof(ReminderController.GetReminder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
}
- // ///
- // /// Duplicate Reminder
- // /// (Wiki and Attachments are not duplicated)
- // ///
- // /// Source object id
- // /// From route path
- // /// Reminder
- // [HttpPost("duplicate/{id}")]
- // public async Task DuplicateReminder([FromRoute] long id, ApiVersion apiVersion)
- // {
- // if (!serverState.IsOpen)
- // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
- // ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
- // if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
- // return StatusCode(403, new ApiNotAuthorizedResponse());
- // if (!ModelState.IsValid)
- // return BadRequest(new ApiErrorResponse(ModelState));
- // Reminder o = await biz.DuplicateAsync(id);
- // if (o == null)
- // return BadRequest(new ApiErrorResponse(biz.Errors));
- // else
- // return CreatedAtAction(nameof(ReminderController.GetReminder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
- // }
///
/// Get Reminder
@@ -99,7 +76,8 @@ namespace AyaNova.Api.Controllers
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var o = await biz.GetAsync(id);
- if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ if (o == null)
+ return BadRequest(new ApiErrorResponse(biz.Errors));
return Ok(ApiOkResponse.Response(o));
}
@@ -118,7 +96,7 @@ namespace AyaNova.Api.Controllers
ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.PutAsync(updatedObject);
+ var o = await biz.PutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -151,7 +129,33 @@ namespace AyaNova.Api.Controllers
-
+ ///
+ /// Get Reminder schedule "more" info
+ ///
+ ///
+ /// Information to display in schedule when selected for more info
+ [HttpGet("sched-info/{id}")]
+ public async Task GetScheduledUserScheduleInfoView([FromRoute] long id)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
+ 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 BadRequest(new ApiErrorResponse(biz.Errors));
+ return Ok(ApiOkResponse.Response(new
+ {
+ o.Color,
+ o.Name,
+ o.Notes,
+ o.StartDate,
+ o.StopDate
+ }));
+ }
//------------
diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index 776dc79e..c579ed1f 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -38,7 +38,7 @@ namespace AyaNova.Api.Controllers
serverState = apiServerState;
}
-
+
/*
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.WorkOrderPutAsync(updatedObject);
+ var o = await biz.WorkOrderPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -320,7 +320,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItem) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.ItemPutAsync(updatedObject);
+ var o = await biz.ItemPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -427,7 +427,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemExpense) || biz.UserIsSubContractorFull || biz.UserIsSubContractorRestricted)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.ExpensePutAsync(updatedObject);
+ var o = await biz.ExpensePutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -535,7 +535,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLabor))
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.LaborPutAsync(updatedObject);
+ var o = await biz.LaborPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -643,7 +643,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLoan) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.LoanPutAsync(updatedObject);
+ var o = await biz.LoanPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -752,7 +752,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemOutsideService) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.OutsideServicePutAsync(updatedObject);
+ var o = await biz.OutsideServicePutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -859,7 +859,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPart) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.PartPutAsync(updatedObject);
+ var o = await biz.PartPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -965,7 +965,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPartRequest) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.PartRequestPutAsync(updatedObject);
+ var o = await biz.PartRequestPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1071,7 +1071,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemScheduledUser) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.ScheduledUserPutAsync(updatedObject);
+ var o = await biz.ScheduledUserPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1104,7 +1104,7 @@ namespace AyaNova.Api.Controllers
- ///
+ ///
/// Get WorkOrderItemScheduledUser schedule info
///
///
@@ -1200,7 +1200,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTask))
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.TaskPutAsync(updatedObject);
+ var o = await biz.TaskPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1306,7 +1306,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTravel))
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.TravelPutAsync(updatedObject);
+ var o = await biz.TravelPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1412,7 +1412,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemUnit) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse());
- var o = await biz.UnitPutAsync(updatedObject);
+ var o = await biz.UnitPutAsync(updatedObject);
if (o == null)
{
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
diff --git a/server/AyaNova/biz/ReminderBiz.cs b/server/AyaNova/biz/ReminderBiz.cs
index d85e5248..d09bcae6 100644
--- a/server/AyaNova/biz/ReminderBiz.cs
+++ b/server/AyaNova/biz/ReminderBiz.cs
@@ -67,6 +67,11 @@ namespace AyaNova.Biz
internal async Task GetAsync(long id, bool logTheGetEvent = true)
{
var ret = await ct.Reminder.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
+ if (ret.UserId != UserId)
+ {
+ AddError(ApiErrorCode.NOT_AUTHORIZED, "generalerror", "A User may only retrieve their own reminders");
+ return null;
+ }
if (logTheGetEvent && ret != null)
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
return ret;
@@ -113,7 +118,7 @@ namespace AyaNova.Biz
return putObject;
}
- ////////////////////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////////////////////
//UPDATE schedule only
//
internal async Task PutNewScheduleTimeAsync(ScheduleItemAdjustParams p)
@@ -143,7 +148,7 @@ namespace AyaNova.Biz
return false;
}
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, dbObject.AyaType, AyaEvent.Modified), ct);
-
+
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, dbObject);
return true;
}
@@ -425,7 +430,7 @@ namespace AyaNova.Biz
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
{
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger();
- if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
+ if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]");
bool isNew = currentObj == null;
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index 5926736f..036e2820 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -4933,216 +4933,9 @@ namespace AyaNova.Biz
//
internal async Task