diff --git a/.vscode/launch.json b/.vscode/launch.json
index 1871b4f7..81598112 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -55,7 +55,7 @@
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
- "AYANOVA_SERVER_TEST_MODE": "true",
+ "AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-8",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin\\"
diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index c579ed1f..313082d3 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -98,6 +98,31 @@ namespace AyaNova.Api.Controllers
return Ok(ApiOkResponse.Response(o));
}
+ ///
+ /// Get WorkOrder for customer
+ ///
+ ///
+ /// Customer WorkOrder
+ [HttpGet("customer/{id}")]
+ public async Task GetCustomerWorkOrder([FromRoute] long id)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ // if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
+ // return StatusCode(403, new ApiNotAuthorizedResponse());
+
+ //does this user have the right to even fetch a customer view workorder??
+
+
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ var o = await biz.WorkOrderGetForCustomerAsync(id, true);
+ if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ return Ok(ApiOkResponse.Response(o));
+ }
+
+
///
/// Update WorkOrder
diff --git a/server/AyaNova/biz/BizRoles.cs b/server/AyaNova/biz/BizRoles.cs
index 03f3925c..48c10492 100644
--- a/server/AyaNova/biz/BizRoles.cs
+++ b/server/AyaNova/biz/BizRoles.cs
@@ -430,7 +430,7 @@ namespace AyaNova.Biz
{
Change = AuthorizationRoles.BizAdmin | AuthorizationRoles.Service | AuthorizationRoles.Tech | AuthorizationRoles.SubContractor | AuthorizationRoles.Accounting,
ReadFullRecord = AuthorizationRoles.BizAdminRestricted | AuthorizationRoles.ServiceRestricted | AuthorizationRoles.Sales |
- AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted | AuthorizationRoles.CustomerRestricted | AuthorizationRoles.Customer,
+ AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted,
Select = AuthorizationRoles.All
});
@@ -441,7 +441,7 @@ namespace AyaNova.Biz
{
Change = AuthorizationRoles.BizAdmin | AuthorizationRoles.Service | AuthorizationRoles.Tech | AuthorizationRoles.SubContractor | AuthorizationRoles.Accounting,
ReadFullRecord = AuthorizationRoles.BizAdminRestricted | AuthorizationRoles.ServiceRestricted | AuthorizationRoles.Sales |
- AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted | AuthorizationRoles.CustomerRestricted | AuthorizationRoles.Customer,
+ AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted,
Select = AuthorizationRoles.All
});
@@ -452,7 +452,7 @@ namespace AyaNova.Biz
{
Change = AuthorizationRoles.BizAdmin | AuthorizationRoles.Service | AuthorizationRoles.Tech | AuthorizationRoles.SubContractor | AuthorizationRoles.Accounting,
ReadFullRecord = AuthorizationRoles.BizAdminRestricted | AuthorizationRoles.ServiceRestricted | AuthorizationRoles.Sales |
- AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted | AuthorizationRoles.CustomerRestricted | AuthorizationRoles.Customer,
+ AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted ,
Select = AuthorizationRoles.All
});
@@ -463,7 +463,7 @@ namespace AyaNova.Biz
{
Change = AuthorizationRoles.BizAdmin | AuthorizationRoles.Service | AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted | AuthorizationRoles.SubContractor | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.Accounting,
ReadFullRecord = AuthorizationRoles.BizAdminRestricted | AuthorizationRoles.ServiceRestricted | AuthorizationRoles.Sales |
- AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted | AuthorizationRoles.CustomerRestricted | AuthorizationRoles.Customer,
+ AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted ,
Select = AuthorizationRoles.All
});
@@ -471,7 +471,7 @@ namespace AyaNova.Biz
{
Change = AuthorizationRoles.BizAdmin | AuthorizationRoles.Service | AuthorizationRoles.Tech | AuthorizationRoles.Accounting,
ReadFullRecord = AuthorizationRoles.BizAdminRestricted | AuthorizationRoles.ServiceRestricted | AuthorizationRoles.Sales |
- AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted | AuthorizationRoles.CustomerRestricted | AuthorizationRoles.Customer,
+ AuthorizationRoles.SalesRestricted | AuthorizationRoles.SubContractorRestricted | AuthorizationRoles.TechRestricted,
Select = AuthorizationRoles.All
});
diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs
index 0347e765..a16ba0d3 100644
--- a/server/AyaNova/biz/UserBiz.cs
+++ b/server/AyaNova/biz/UserBiz.cs
@@ -107,7 +107,7 @@ namespace AyaNova.Biz
}
}
- internal static async Task CustomerUserEffectiveRightsAsync(long userId)
+ internal static async Task CustomerUserEffectiveRightsAsync(long userId, long? workorderId=null)
{
using (AyContext ct = ServiceProviderProvider.DBContext)
{
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index f1c25107..36ecef30 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -302,6 +302,94 @@ namespace AyaNova.Biz
return ret;
}
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ // GET
+ //
+ internal async Task WorkOrderGetForCustomerAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting = false)
+ {
+ throw new System.NotImplementedException();
+
+ // var ret = await WorkOrderGetFullAsync(id);
+
+ // if (ret != null)
+ // {
+ // var stat = await GetCurrentWorkOrderStatusFromRelatedAsync(BizType, ret.Id);
+ // ret.IsLockedAtServer = stat.Locked;
+
+ // var userIsTechRestricted = UserIsTechRestricted;
+ // var userIsSubContractorFull = UserIsSubContractorFull;
+ // var userIsSubContractorRestricted = UserIsSubContractorRestricted;
+ // var userIsRestricted = (userIsTechRestricted || userIsSubContractorFull || userIsSubContractorRestricted);
+
+
+ // if (userIsRestricted)
+ // {
+ // //Restricted users can only work with workorder items they are scheduled on
+
+ // List removeItems = new List();
+ // //gather list of items to remove by checking if they are scheduled on them or not
+ // foreach (WorkOrderItem wi in ret.Items)
+ // {
+ // var userIsSelfScheduledOnThisItem = false;
+ // foreach (WorkOrderItemScheduledUser su in wi.ScheduledUsers)
+ // {
+ // if (su.UserId == UserId)
+ // {
+ // userIsSelfScheduledOnThisItem = true;
+ // break;
+ // }
+ // }
+ // if (!userIsSelfScheduledOnThisItem) removeItems.Add(wi);
+ // }
+ // foreach (var removeitem in removeItems)
+ // {
+ // ret.Items.Remove(removeitem);
+ // ret.IsCompleteRecord = false;
+ // }
+
+ // //Restricted users may have further restrictions
+ // foreach (WorkOrderItem wi in ret.Items)
+ // {
+ // //all restricted types
+ // wi.ScheduledUsers.RemoveAll(x => x.UserId != UserId);
+ // wi.Labors.RemoveAll(x => x.UserId != UserId);
+ // wi.Travels.RemoveAll(x => x.UserId != UserId);
+
+ // if (userIsTechRestricted)
+ // {
+ // wi.Expenses.RemoveAll(x => x.UserId != UserId);
+ // }
+
+ // if (userIsSubContractorFull)
+ // {
+ // wi.Expenses.RemoveAll(x => true);
+ // wi.OutsideServices.RemoveAll(x => true);
+ // }
+
+ // if (userIsSubContractorRestricted)
+ // {
+ // wi.Units.RemoveAll(x => true);
+ // wi.Parts.RemoveAll(x => true);
+ // wi.PartRequests.RemoveAll(x => true);
+ // wi.Expenses.RemoveAll(x => true);
+ // wi.Loans.RemoveAll(x => true);
+ // wi.OutsideServices.RemoveAll(x => true);
+ // }
+
+ // //tasks are allowed to be viewed and update the task completion types
+ // }
+ // }
+
+ // if (populateDisplayFields)
+ // await WorkOrderPopulateVizFields(ret, false, populateForReporting);
+
+ // if (logTheGetEvent && ret != null)
+ // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
+ // }
+ // return ret;
+ }
+
////////////////////////////////////////////////////////////////////////////////////////////////
//UPDATE
//
@@ -464,9 +552,9 @@ namespace AyaNova.Biz
private async Task AutoSetAddressAsync(WorkOrder newObj)
{
- if(!string.IsNullOrWhiteSpace(newObj.PostAddress) || !string.IsNullOrWhiteSpace(newObj.Address))
+ if (!string.IsNullOrWhiteSpace(newObj.PostAddress) || !string.IsNullOrWhiteSpace(newObj.Address))
return;
-
+
if (newObj.CustomerId == 0)
return;