changed all lambda experssion variables to z from various where appropriate
This commit is contained in:
@@ -6,9 +6,6 @@ PRIORITY - ALWAYS Lowest level stuff first
|
||||
}
|
||||
|
||||
|
||||
todo: usertype scheduleable? Or sb Service and nonScheduleble sb NonService and subcontractor sb ServiceContractor?
|
||||
will require some renaming of things but this is more logical and meets intended usage
|
||||
|
||||
todo: Pick a consistent single letter lambda expression variable and standardize on it.
|
||||
one of X Y or Z is best as it doesn't trigger intellisense
|
||||
todo: OPS routes (SERVER AND CLIENT)
|
||||
|
||||
@@ -59,43 +59,7 @@ namespace AyaNova.Api.ControllerHelpers
|
||||
//Message = "Validation Failed";
|
||||
Error.Details = new List<ApiDetailError>();
|
||||
|
||||
/*
|
||||
https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.modelbinding.modelerror?view=aspnetcore-2.2
|
||||
|
||||
modelState["roles"].Errors
|
||||
Count = 1
|
||||
[0]:{Microsoft.AspNetCore.Mvc.ModelBinding.ModelError}
|
||||
ErrorMessage [string]:""
|
||||
Exception [Exception]:{Newtonsoft.Json.JsonSerializationException: Error converting value "" to type 'AyaNova.Biz.AuthorizationRoles'. Path 'roles', line 1, position 146. ---> System.ArgumentException: Must specify valid information for parsing in the string.\r\n at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber) in /_/Src/Newtonsoft.Json/Utilities/EnumUtils.cs:line 285\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 958\r\n --- End of inner exception stack trace ---\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 989\r\n at Newtonsoft.Json.Serialization.Jso...
|
||||
Data [IDictionary]:{System.Collections.ListDictionaryInternal}
|
||||
HResult [int]:-2146233088
|
||||
HelpLink [string]:null
|
||||
InnerException [Exception]:{System.ArgumentException: Must specify valid information for parsing in the string.\r\n at Newtonsoft.Json.Utilities.EnumUtils.ParseEnum(Type enumType, NamingStrategy namingStrategy, String value, Boolean disallowNumber) in /_/Src/Newtonsoft.Json/Utilities/EnumUtils.cs:line 285\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 958}
|
||||
LineNumber [int]:1
|
||||
LinePosition [int]:146
|
||||
Message [string]:"Error converting value \"\" to type 'AyaNova.Biz.AuthorizationRoles'. Path 'roles', line 1, position 146."
|
||||
Path [string]:"roles"
|
||||
Source [string]:"Newtonsoft.Json"
|
||||
StackTrace [string]:" at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 989\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 1032\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) in /_/Src/Newtonsoft.Json/Serialization/JsonSerializerInternalReader.cs:line 2386"
|
||||
TargetSite [MethodBase]:{System.Object EnsureType(Newtonsoft.Json.JsonReader, System.Object, System.Globalization.CultureInfo, Newtonsoft.Json.Serialization.JsonContract, System.Type)}
|
||||
Static members
|
||||
Non-Public members
|
||||
Raw View
|
||||
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.1\System.Reflection.Metadata.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
|
||||
Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.1\System.IO.MemoryMappedFiles.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
|
||||
modelState["roles"].Errors[0].Exception.Message
|
||||
"Error converting value \"\" to type 'AyaNova.Biz.AuthorizationRoles'. Path 'roles', line 1, position 146."
|
||||
modelState["roles"].Errors
|
||||
Count = 1
|
||||
[0]:{Microsoft.AspNetCore.Mvc.ModelBinding.ModelError */
|
||||
|
||||
|
||||
//original method missing details:
|
||||
// Error.Details.AddRange(modelState.Keys
|
||||
// .SelectMany(key => modelState[key].Errors
|
||||
// .Select(x => new ApiDetailError() { Code = ((int)ApiErrorCode.VALIDATION_FAILED).ToString(), Target = key, Message = x.ErrorMessage, Error=ApiErrorCode.VALIDATION_FAILED.ToString() })));
|
||||
|
||||
//var vErrors = modelState.Keys.SelectMany(key => modelState[key].Errors);
|
||||
|
||||
foreach (var key in modelState.Keys)
|
||||
{
|
||||
var vErrors = modelState[key].Errors;
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace AyaNova.Api.Controllers
|
||||
if (!ModelState.IsValid)
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (dbObj == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
@@ -369,7 +369,7 @@ namespace AyaNova.Api.Controllers
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
}
|
||||
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (dbObj == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
@@ -431,7 +431,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
//get user by key, if not found then reject
|
||||
//If user dlkeyexp has not expired then return file
|
||||
var DownloadUser = await ct.User.AsNoTracking().SingleOrDefaultAsync(m => m.DlKey == t && m.Active == true);
|
||||
var DownloadUser = await ct.User.AsNoTracking().SingleOrDefaultAsync(z => z.DlKey == t && z.Active == true);
|
||||
if (DownloadUser == null)
|
||||
{
|
||||
await Task.Delay(nFailedAuthDelay);//DOS protection
|
||||
@@ -450,7 +450,7 @@ namespace AyaNova.Api.Controllers
|
||||
}
|
||||
|
||||
//Ok, user has a valid download key and it's not expired yet so get the attachment record
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var dbObj = await ct.FileAttachment.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (dbObj == null)
|
||||
{
|
||||
await Task.Delay(nFailedAuthDelay);//fishing protection
|
||||
@@ -491,10 +491,10 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
async private Task<object> GetFileListForObjectAsync(AyaType ayaType, long ayaId)
|
||||
{
|
||||
var l = await ct.FileAttachment.AsNoTracking().Where(m => m.AttachToObjectId == ayaId && m.AttachToObjectType == ayaType)
|
||||
.Select(m => new { m.Id, m.Concurrency, m.ContentType, m.DisplayFileName, m.LastModified, m.Notes })
|
||||
var l = await ct.FileAttachment.AsNoTracking().Where(z => z.AttachToObjectId == ayaId && z.AttachToObjectType == ayaType)
|
||||
.Select(z => new { z.Id, z.Concurrency, z.ContentType, z.DisplayFileName, z.LastModified, z.Notes })
|
||||
.ToArrayAsync();
|
||||
var v = l.OrderBy(m => m.DisplayFileName);
|
||||
var v = l.OrderBy(z => z.DisplayFileName);
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
//Multiple users are allowed the same password and login
|
||||
//Salt will differentiate them so get all users that match login, then try to match pw
|
||||
var users = await ct.User.Where(m => m.Login == creds.Login && m.Active == true).ToListAsync();
|
||||
var users = await ct.User.Where(z => z.Login == creds.Login && z.Active == true).ToListAsync();
|
||||
|
||||
foreach (User u in users)
|
||||
{
|
||||
@@ -278,7 +278,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
//Multiple users are allowed the same password and login
|
||||
//Salt will differentiate them so get all users that match login, then try to match pw
|
||||
var users = await ct.User.AsNoTracking().Where(m => m.Login == changecreds.LoginName).ToListAsync();
|
||||
var users = await ct.User.AsNoTracking().Where(z => z.Login == changecreds.LoginName).ToListAsync();
|
||||
|
||||
foreach (User u in users)
|
||||
{
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -189,7 +189,7 @@ namespace AyaNova.Api.Controllers
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
}
|
||||
|
||||
var oFromDb = await ct.TranslationItem.SingleOrDefaultAsync(m => m.Id == inObj.Id);
|
||||
var oFromDb = await ct.TranslationItem.SingleOrDefaultAsync(z => z.Id == inObj.Id);
|
||||
|
||||
if (oFromDb == null)
|
||||
{
|
||||
@@ -197,7 +197,7 @@ namespace AyaNova.Api.Controllers
|
||||
}
|
||||
|
||||
//Now fetch translation for rights and to ensure not stock
|
||||
var oDbParent = await ct.Translation.SingleOrDefaultAsync(x => x.Id == oFromDb.TranslationId);
|
||||
var oDbParent = await ct.Translation.SingleOrDefaultAsync(z => z.Id == oFromDb.TranslationId);
|
||||
if (oDbParent == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
@@ -256,7 +256,7 @@ namespace AyaNova.Api.Controllers
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
}
|
||||
|
||||
var oFromDb = await ct.TranslationItem.AsNoTracking().SingleOrDefaultAsync(m => m.Id == inObj[0].Id);
|
||||
var oFromDb = await ct.TranslationItem.AsNoTracking().SingleOrDefaultAsync(z => z.Id == inObj[0].Id);
|
||||
|
||||
if (oFromDb == null)
|
||||
{
|
||||
@@ -264,7 +264,7 @@ namespace AyaNova.Api.Controllers
|
||||
}
|
||||
|
||||
//Now fetch translation for rights and to ensure not stock
|
||||
var oDbParent = await ct.Translation.SingleOrDefaultAsync(x => x.Id == oFromDb.TranslationId);
|
||||
var oDbParent = await ct.Translation.SingleOrDefaultAsync(z => z.Id == oFromDb.TranslationId);
|
||||
if (oDbParent == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
@@ -315,7 +315,7 @@ namespace AyaNova.Api.Controllers
|
||||
return BadRequest(new ApiErrorResponse(ModelState));
|
||||
}
|
||||
|
||||
var oFromDb = await ct.Translation.SingleOrDefaultAsync(m => m.Id == inObj.Id);
|
||||
var oFromDb = await ct.Translation.SingleOrDefaultAsync(z => z.Id == inObj.Id);
|
||||
|
||||
if (oFromDb == null)
|
||||
{
|
||||
@@ -377,7 +377,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
//Fetch translation and it's children
|
||||
//(fetch here so can return proper REST responses on failing basic validity)
|
||||
var dbObj = await ct.Translation.Include(x => x.TranslationItems).SingleOrDefaultAsync(m => m.Id == id);
|
||||
var dbObj = await ct.Translation.Include(z => z.TranslationItems).SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (dbObj == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -129,7 +129,7 @@ namespace AyaNova.Api.Controllers
|
||||
// return BadRequest(new ApiErrorResponse(ModelState));
|
||||
// }
|
||||
|
||||
// var o = await ct.User.SingleOrDefaultAsync(m => m.Id == id);
|
||||
// var o = await ct.User.SingleOrDefaultAsync(z => z.Id == id);
|
||||
|
||||
// if (o == null)
|
||||
// {
|
||||
@@ -238,7 +238,7 @@ namespace AyaNova.Api.Controllers
|
||||
//Instantiate the business object handler
|
||||
UserBiz biz = UserBiz.GetBiz(ct, HttpContext);
|
||||
|
||||
var dbObj = await ct.User.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var dbObj = await ct.User.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (dbObj == null)
|
||||
{
|
||||
return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||
@@ -261,7 +261,7 @@ namespace AyaNova.Api.Controllers
|
||||
|
||||
private bool UserExists(long id)
|
||||
{
|
||||
return ct.User.Any(e => e.Id == id);
|
||||
return ct.User.Any(z => z.Id == id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ namespace AyaNova.Api.Controllers
|
||||
}
|
||||
var UserId = UserIdFromContext.Id(HttpContext.Items);
|
||||
|
||||
var o = await ct.UserOptions.SingleOrDefaultAsync(m => m.UserId == id);
|
||||
var o = await ct.UserOptions.SingleOrDefaultAsync(z => z.UserId == id);
|
||||
|
||||
if (o == null)
|
||||
{
|
||||
@@ -146,7 +146,7 @@ namespace AyaNova.Api.Controllers
|
||||
private bool UserOptionsExists(long id)
|
||||
{
|
||||
//NOTE: checks by UserId, NOT by Id as in most other objects
|
||||
return ct.UserOptions.Any(e => e.UserId == id);
|
||||
return ct.UserOptions.Any(z => z.UserId == id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -128,7 +128,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.WorkOrderPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -269,7 +269,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.ItemPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -376,7 +376,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.ExpensePutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -484,7 +484,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.LaborPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -592,7 +592,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.LoanPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -698,7 +698,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PartPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -804,7 +804,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.PartRequestPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -910,7 +910,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.ScheduledUserPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -1016,7 +1016,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.TaskPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -1122,7 +1122,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.TravelPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
@@ -1228,7 +1228,7 @@ namespace AyaNova.Api.Controllers
|
||||
var o = await biz.UnitPutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token
|
||||
if (o == null)
|
||||
{
|
||||
if (biz.Errors.Exists(m => m.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
|
||||
return StatusCode(409, new ApiErrorResponse(biz.Errors));
|
||||
else
|
||||
return BadRequest(new ApiErrorResponse(biz.Errors));
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace AyaNova.DataList
|
||||
|
||||
foreach (string s in ListViewFieldKeys)
|
||||
{
|
||||
AyaDataListFieldDefinition o = FieldDefinitions.FirstOrDefault(x => x.FieldKey == s);
|
||||
AyaDataListFieldDefinition o = FieldDefinitions.FirstOrDefault(z => z.FieldKey == s);
|
||||
#if (DEBUG)
|
||||
//Developers little helper
|
||||
if (o == null)
|
||||
@@ -139,7 +139,7 @@ namespace AyaNova.DataList
|
||||
//fetch it and set it
|
||||
using (var ct = AyaNova.Util.ServiceProviderProvider.DBContext)
|
||||
{
|
||||
var fc = ct.FormCustom.AsNoTracking().SingleOrDefault(x => x.FormKey == ayatypename);
|
||||
var fc = ct.FormCustom.AsNoTracking().SingleOrDefault(z => z.FormKey == ayatypename);
|
||||
//This is normal and expected in an empty db, removing this block
|
||||
// #if (DEBUG)
|
||||
// if (fc == null)
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace AyaNova.DataList
|
||||
{
|
||||
|
||||
//get the AyaObjectFieldDefinition
|
||||
AyaDataListFieldDefinition f = DataList.FieldDefinitions.FirstOrDefault(x => x.FieldKey == TemplateField);
|
||||
AyaDataListFieldDefinition f = DataList.FieldDefinitions.FirstOrDefault(z => z.FieldKey == TemplateField);
|
||||
if (f.IsCustomField)
|
||||
{
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace AyaNova.DataList
|
||||
|
||||
//Get some info about this column / field
|
||||
var fld = cm["fld"].Value<string>();
|
||||
var dataType = objectFieldsList.Find(x => x.FieldKey.ToLowerInvariant() == fld).UiFieldDataType;
|
||||
AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(x => x.FieldKey == fld);
|
||||
var dataType = objectFieldsList.Find(z => z.FieldKey.ToLowerInvariant() == fld).UiFieldDataType;
|
||||
AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(z => z.FieldKey == fld);
|
||||
|
||||
//No filtering on custom fields!
|
||||
if (DataListField.IsCustomField)
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace AyaNova.DataList
|
||||
var fld = cm["fld"].Value<string>();
|
||||
var dir = cm["sort"].Value<string>();
|
||||
//Get the correct sql column name
|
||||
AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(x => x.FieldKey == fld);
|
||||
AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(z => z.FieldKey == fld);
|
||||
//No sorting on custom fields!
|
||||
if (DataListField.IsCustomField)
|
||||
{
|
||||
@@ -57,7 +57,7 @@ namespace AyaNova.DataList
|
||||
if (sb.Length == 0)
|
||||
{
|
||||
//no sort specified so default it
|
||||
AyaDataListFieldDefinition rid = objectFieldsList.FirstOrDefault(x => x.IsRowId == true);
|
||||
AyaDataListFieldDefinition rid = objectFieldsList.FirstOrDefault(z => z.IsRowId == true);
|
||||
if (rid != null)
|
||||
{
|
||||
return $"ORDER BY {rid.SqlIdColumnName} DESC";
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace AyaNova.DataList
|
||||
|
||||
//DEPRECATED
|
||||
// //Default ID column for each row (always is aliased as df)
|
||||
// AyaDataListFieldDefinition def = objectFieldsList.FirstOrDefault(x => x.FieldKey == "df");
|
||||
// AyaDataListFieldDefinition def = objectFieldsList.FirstOrDefault(z => z.FieldKey == "df");
|
||||
// if (def == null)
|
||||
// {
|
||||
// throw new System.ArgumentNullException("DataListSqlSelectBuilder: objectFieldList is missing the df default field");
|
||||
@@ -59,7 +59,7 @@ namespace AyaNova.DataList
|
||||
// //skip the df column, it's already been processed above
|
||||
// if (ColumnName == "df")
|
||||
// continue;
|
||||
AyaDataListFieldDefinition o = objectFieldsList.FirstOrDefault(x => x.FieldKey == ColumnName);
|
||||
AyaDataListFieldDefinition o = objectFieldsList.FirstOrDefault(z => z.FieldKey == ColumnName);
|
||||
#if (DEBUG)
|
||||
//Developers little helper
|
||||
if (o == null)
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace AyaNova.PickList
|
||||
//Sort out effective Template
|
||||
string Template = null;
|
||||
//Attempt to fetch custom template
|
||||
var t = await ct.PickListTemplate.FirstOrDefaultAsync(m => m.Id == ((long)PickList.DefaultListObjectType));
|
||||
var t = await ct.PickListTemplate.FirstOrDefaultAsync(z => z.Id == ((long)PickList.DefaultListObjectType));
|
||||
if (t == null)
|
||||
{
|
||||
Template = PickList.DefaultTemplate;
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace AyaNova.PickList
|
||||
|
||||
//PROCESS ROW ID "VALUE" COLUMN
|
||||
//
|
||||
AyaPickListFieldDefinition rowIdColumn = pickList.ColumnDefinitions.FirstOrDefault(x => x.IsRowId == true);
|
||||
AyaPickListFieldDefinition rowIdColumn = pickList.ColumnDefinitions.FirstOrDefault(z => z.IsRowId == true);
|
||||
//this should only happen with a development error
|
||||
if (rowIdColumn == null)
|
||||
throw new System.ArgumentNullException($"DEV ERROR in PickListSqlBuilder.cs: picklist for {pickList.DefaultListObjectType.ToString()} has no rowId column specified in columnDefinitions list");
|
||||
@@ -64,7 +64,7 @@ namespace AyaNova.PickList
|
||||
//but we provide the override for that if necessary as there are often (management usually) cases where user needs to select inactive records
|
||||
|
||||
//add active column, fake it if necessary
|
||||
AyaPickListFieldDefinition activeColumn = pickList.ColumnDefinitions.FirstOrDefault(x => x.IsActiveColumn == true);
|
||||
AyaPickListFieldDefinition activeColumn = pickList.ColumnDefinitions.FirstOrDefault(z => z.IsActiveColumn == true);
|
||||
if (activeColumn == null)
|
||||
{
|
||||
//no active column which is normal for some types of objects
|
||||
@@ -92,7 +92,7 @@ namespace AyaNova.PickList
|
||||
if (HasTagSpecificQuery)
|
||||
{
|
||||
//get the tag column
|
||||
AyaPickListFieldDefinition tagColumn = pickList.ColumnDefinitions.FirstOrDefault(x => x.ColumnDataType == UiFieldDataType.Tags);
|
||||
AyaPickListFieldDefinition tagColumn = pickList.ColumnDefinitions.FirstOrDefault(z => z.ColumnDataType == UiFieldDataType.Tags);
|
||||
TagSpecificWhereFragment = $"(array_to_string({tagColumn.GetSqlValueColumnName()},',') like '%{tagSpecificQuery}%')";
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace AyaNova.PickList
|
||||
foreach (string ColumnName in templateColumnNames)
|
||||
{
|
||||
|
||||
AyaPickListFieldDefinition o = pickList.ColumnDefinitions.FirstOrDefault(x => x.FieldKey == ColumnName);
|
||||
AyaPickListFieldDefinition o = pickList.ColumnDefinitions.FirstOrDefault(z => z.FieldKey == ColumnName);
|
||||
#if (DEBUG)
|
||||
if (o == null)
|
||||
{
|
||||
|
||||
@@ -161,7 +161,7 @@ namespace AyaNova
|
||||
//log configuration
|
||||
try
|
||||
{
|
||||
var AyaNovaConfig=config.AsEnumerable().Where(m => m.Key.StartsWith("AYANOVA") && m.Key!="AYANOVA_JWT_SECRET").Select(m=>m.Key+ "="+ m.Value).ToList();
|
||||
var AyaNovaConfig=config.AsEnumerable().Where(z => z.Key.StartsWith("AYANOVA") && z.Key!="AYANOVA_JWT_SECRET").Select(z=>z.Key+ "="+ z.Value).ToList();
|
||||
var DiagConfig=string.Join(",", AyaNovaConfig);
|
||||
DiagConfig=DbUtil.PasswordRedactedConnectionString(DiagConfig);
|
||||
logger.Info($"Config {DiagConfig}");
|
||||
|
||||
@@ -33,79 +33,79 @@ namespace AyaNova.Biz
|
||||
//CoreBizObject add here
|
||||
|
||||
case AyaType.FileAttachment:
|
||||
return await ct.FileAttachment.AnyAsync(m => m.Id == id);
|
||||
return await ct.FileAttachment.AnyAsync(z => z.Id == id);
|
||||
case AyaType.DataListView:
|
||||
return await ct.DataListView.AnyAsync(m => m.Id == id);
|
||||
return await ct.DataListView.AnyAsync(z => z.Id == id);
|
||||
case AyaType.FormCustom:
|
||||
return await ct.FormCustom.AnyAsync(m => m.Id == id);
|
||||
return await ct.FormCustom.AnyAsync(z => z.Id == id);
|
||||
case AyaType.User:
|
||||
return await ct.User.AnyAsync(m => m.Id == id);
|
||||
return await ct.User.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Widget:
|
||||
return await ct.Widget.AnyAsync(m => m.Id == id);
|
||||
return await ct.Widget.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Customer:
|
||||
return await ct.Customer.AnyAsync(m => m.Id == id);
|
||||
return await ct.Customer.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Contract:
|
||||
return await ct.Contract.AnyAsync(m => m.Id == id);
|
||||
return await ct.Contract.AnyAsync(z => z.Id == id);
|
||||
case AyaType.HeadOffice:
|
||||
return await ct.HeadOffice.AnyAsync(m => m.Id == id);
|
||||
return await ct.HeadOffice.AnyAsync(z => z.Id == id);
|
||||
case AyaType.LoanUnit:
|
||||
return await ct.LoanUnit.AnyAsync(m => m.Id == id);
|
||||
return await ct.LoanUnit.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Part:
|
||||
return await ct.Part.AnyAsync(m => m.Id == id);
|
||||
return await ct.Part.AnyAsync(z => z.Id == id);
|
||||
case AyaType.PM:
|
||||
return await ct.PM.AnyAsync(m => m.Id == id);
|
||||
return await ct.PM.AnyAsync(z => z.Id == id);
|
||||
case AyaType.PMItem:
|
||||
return await ct.PMItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.PMItem.AnyAsync(z => z.Id == id);
|
||||
case AyaType.PMTemplate:
|
||||
return await ct.PMTemplate.AnyAsync(m => m.Id == id);
|
||||
return await ct.PMTemplate.AnyAsync(z => z.Id == id);
|
||||
case AyaType.PMTemplateItem:
|
||||
return await ct.PMTemplateItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.PMTemplateItem.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Project:
|
||||
return await ct.Project.AnyAsync(m => m.Id == id);
|
||||
return await ct.Project.AnyAsync(z => z.Id == id);
|
||||
case AyaType.PurchaseOrder:
|
||||
return await ct.PurchaseOrder.AnyAsync(m => m.Id == id);
|
||||
return await ct.PurchaseOrder.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Quote:
|
||||
return await ct.Quote.AnyAsync(m => m.Id == id);
|
||||
return await ct.Quote.AnyAsync(z => z.Id == id);
|
||||
case AyaType.QuoteItem:
|
||||
return await ct.QuoteItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.QuoteItem.AnyAsync(z => z.Id == id);
|
||||
case AyaType.QuoteTemplate:
|
||||
return await ct.QuoteTemplate.AnyAsync(m => m.Id == id);
|
||||
return await ct.QuoteTemplate.AnyAsync(z => z.Id == id);
|
||||
case AyaType.QuoteTemplateItem:
|
||||
return await ct.QuoteTemplateItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.QuoteTemplateItem.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Unit:
|
||||
return await ct.Unit.AnyAsync(m => m.Id == id);
|
||||
return await ct.Unit.AnyAsync(z => z.Id == id);
|
||||
case AyaType.UnitModel:
|
||||
return await ct.UnitModel.AnyAsync(m => m.Id == id);
|
||||
return await ct.UnitModel.AnyAsync(z => z.Id == id);
|
||||
case AyaType.Vendor:
|
||||
return await ct.Vendor.AnyAsync(m => m.Id == id);
|
||||
return await ct.Vendor.AnyAsync(z => z.Id == id);
|
||||
//--- WorkOrder
|
||||
case AyaType.WorkOrder:
|
||||
return await ct.WorkOrder.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrder.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItem:
|
||||
return await ct.WorkOrderItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItem.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemExpense:
|
||||
return await ct.WorkOrderItemExpense.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemExpense.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemLabor:
|
||||
return await ct.WorkOrderItemLabor.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemLabor.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemLoan:
|
||||
return await ct.WorkOrderItemLoan.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemLoan.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemPart:
|
||||
return await ct.WorkOrderItemPart.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemPart.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemPartRequest:
|
||||
return await ct.WorkOrderItemPartRequest.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemPartRequest.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemScheduledUser:
|
||||
return await ct.WorkOrderItemScheduledUser.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemScheduledUser.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemTask:
|
||||
return await ct.WorkOrderItemTask.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemTask.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemTravel:
|
||||
return await ct.WorkOrderItemTravel.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemTravel.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderItemUnit:
|
||||
return await ct.WorkOrderItemUnit.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderItemUnit.AnyAsync(z => z.Id == id);
|
||||
//---
|
||||
case AyaType.WorkOrderTemplate:
|
||||
return await ct.WorkOrderTemplate.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderTemplate.AnyAsync(z => z.Id == id);
|
||||
case AyaType.WorkOrderTemplateItem:
|
||||
return await ct.WorkOrderTemplateItem.AnyAsync(m => m.Id == id);
|
||||
return await ct.WorkOrderTemplateItem.AnyAsync(z => z.Id == id);
|
||||
|
||||
default:
|
||||
throw new System.NotSupportedException($"AyaNova.Biz.BizObjectExistsInDatabase::ExistsAsync type {ayaType.ToString()} is not supported");
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Contract.AnyAsync(e => e.Id == id);
|
||||
return await ct.Contract.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace AyaNova.Biz
|
||||
return;
|
||||
|
||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||
var ThisFormCustomFieldsList = AyaFormFieldDefinitions.AyaFormFields(formCustom.FormKey).Where(x => x.IsCustomField == true).Select(x => x.TKey).ToList();
|
||||
var ThisFormCustomFieldsList = AyaFormFieldDefinitions.AyaFormFields(formCustom.FormKey).Where(z => z.IsCustomField == true).Select(z => z.TKey).ToList();
|
||||
|
||||
//If the customFields string is empty then only validation is if any of the fields are required to be filled in
|
||||
if (!hasCustomData)
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Customer.AnyAsync(e => e.Id == id);
|
||||
return await ct.Customer.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Customer> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.Customer.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.Customer.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Customer> PutAsync(Customer putObject)
|
||||
{
|
||||
Customer dbObject = await ct.Customer.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
Customer dbObject = await ct.Customer.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
Customer dbObject = await ct.Customer.SingleOrDefaultAsync(m => m.Id == id);
|
||||
Customer dbObject = await ct.Customer.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.Customer.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.Customer.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.Customer.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.Customer.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Customer.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.Customer.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.DataListView.AnyAsync(e => e.Id == id);
|
||||
return await ct.DataListView.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ namespace AyaNova.Biz
|
||||
//EVENT LOG
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct);
|
||||
|
||||
|
||||
|
||||
|
||||
return outObj;
|
||||
|
||||
@@ -85,27 +85,27 @@ namespace AyaNova.Biz
|
||||
|
||||
DataListView outObj = new DataListView();
|
||||
CopyObject.Copy(dbObj, outObj);
|
||||
//generate unique name
|
||||
//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.DataListView.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.DataListView.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
outObj.Name = newUniqueName;
|
||||
outObj.Id = 0;
|
||||
outObj.Concurrency = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
await ct.DataListView.AddAsync(outObj);
|
||||
await ct.SaveChangesAsync();
|
||||
|
||||
//Handle child and associated items:
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, outObj.Id, BizType, AyaEvent.Created), ct);
|
||||
|
||||
|
||||
return outObj;
|
||||
|
||||
}
|
||||
@@ -117,7 +117,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<DataListView> GetAsync(long fetchId, bool logTheGetEvent = true)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var ret = await ct.DataListView.SingleOrDefaultAsync(m => m.Id == fetchId && (m.Public == true || m.UserId == UserId));
|
||||
var ret = await ct.DataListView.SingleOrDefaultAsync(z => z.Id == fetchId && (z.Public == true || z.UserId == UserId));
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -137,12 +137,12 @@ namespace AyaNova.Biz
|
||||
{
|
||||
items = await ct.DataListView
|
||||
.AsNoTracking()
|
||||
.Where(m => m.ListKey == listKey && (m.Public == true || m.UserId == UserId))
|
||||
.OrderBy(m => m.Name)
|
||||
.Select(m => new NameIdItem()
|
||||
.Where(z => z.ListKey == listKey && (z.Public == true || z.UserId == UserId))
|
||||
.OrderBy(z => z.Name)
|
||||
.Select(z => new NameIdItem()
|
||||
{
|
||||
Id = m.Id,
|
||||
Name = m.Name
|
||||
Id = z.Id,
|
||||
Name = z.Name
|
||||
}).ToListAsync();
|
||||
|
||||
}
|
||||
@@ -177,7 +177,7 @@ namespace AyaNova.Biz
|
||||
//Log modification and save context
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObj.Id, BizType, AyaEvent.Modified), ct);
|
||||
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -241,7 +241,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.DataListView.AnyAsync(m => m.Name == inObj.Name && m.Id != inObj.Id))
|
||||
if (await ct.DataListView.AnyAsync(z => z.Name == inObj.Name && z.Id != inObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -286,7 +286,7 @@ namespace AyaNova.Biz
|
||||
if (DataList != null)
|
||||
{
|
||||
|
||||
var TheField = DataList.FieldDefinitions.SingleOrDefault(x => x.FieldKey.ToLowerInvariant() == fld);
|
||||
var TheField = DataList.FieldDefinitions.SingleOrDefault(z => z.FieldKey.ToLowerInvariant() == fld);
|
||||
|
||||
if (TheField == null)
|
||||
{
|
||||
@@ -330,88 +330,11 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
|
||||
// //VALIDATE SORT
|
||||
// //Filter json must parse
|
||||
// if (!string.IsNullOrWhiteSpace(inObj.Sort))
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var v = JArray.Parse(inObj.Sort);
|
||||
// for (int i = 0; i < v.Count; i++)
|
||||
// {
|
||||
// var sortItem = v[i];
|
||||
// if (sortItem["fld"] == null)
|
||||
// AddError(ApiErrorCode.VALIDATION_REQUIRED, "Sort", $"Sort array item {i}, object is missing required \"fld\" property ");
|
||||
// else
|
||||
// {
|
||||
// var fld = sortItem["fld"].Value<string>();
|
||||
// if (string.IsNullOrWhiteSpace(fld))
|
||||
// AddError(ApiErrorCode.VALIDATION_REQUIRED, "Sort", $"Sort array item {i}, \"fld\" property is empty and required");
|
||||
|
||||
// //validate the field name if we can
|
||||
// if (DataList != null)
|
||||
// {
|
||||
|
||||
// if (!DataList.FieldDefinitions.Exists(x => x.FieldKey.ToLowerInvariant() == fld && x.IsFilterable))
|
||||
// {
|
||||
// AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Sort", $"Sort array item {i}, fld property value \"{fld}\" is not a valid value for ListKey specified");
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
// if (sortItem["dir"] == null)
|
||||
// AddError(ApiErrorCode.VALIDATION_REQUIRED, "Sort", $"Sort array item {i}, object is missing required \"dir\" sort direction property ");
|
||||
// else
|
||||
// {
|
||||
// var sortDir = sortItem["dir"].Value<string>();
|
||||
// if (sortDir != "+" && sortDir != "-")
|
||||
// AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Sort", $"Sort array item {i}, \"dir\" property value of \"{sortDir}\" is not a valid sort direction value, must be \"+\" or \"-\" only");
|
||||
// }
|
||||
// //NOTE: value of nothing, null or empty is a valid value so no checking for it here
|
||||
// }
|
||||
// }
|
||||
// catch (Newtonsoft.Json.JsonReaderException ex)
|
||||
// {
|
||||
// AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Sort", "Sort is not valid JSON string: " + ex.Message);
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//FOR FUTURE
|
||||
// private void ValidateCanDelete(DataListFilter inObj)
|
||||
// {
|
||||
// //Leaving this off for now
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// ////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// //JOB / OPERATIONS
|
||||
// //
|
||||
// public async Task HandleJobAsync(OpsJob job)
|
||||
// {
|
||||
// //Hand off the particular job to the corresponding processing code
|
||||
// //NOTE: If this code throws an exception the caller (JobsBiz::ProcessJobsAsync) will automatically set the job to failed and log the exeption so
|
||||
// //basically any error condition during job processing should throw up an exception if it can't be handled
|
||||
// switch (job.JobType)
|
||||
// {
|
||||
// case JobType.TestDataFilterJob:
|
||||
// await ProcessTestJobAsync(job);
|
||||
// break;
|
||||
// default:
|
||||
// throw new System.ArgumentOutOfRangeException($"DataFilterBiz.HandleJob-> Invalid job type{job.JobType.ToString()}");
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
//Other job handlers here...
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -56,9 +56,9 @@ namespace AyaNova.Biz
|
||||
var offset = opt.Offset ?? 0;
|
||||
|
||||
//Set up the query
|
||||
var q = ct.Event.Select(m => m).AsNoTracking();
|
||||
q = q.Where(m => m.AyId == opt.AyId && m.AyaType == opt.AyaType);
|
||||
q = q.OrderByDescending(m => m.Created);
|
||||
var q = ct.Event.Select(z => z).AsNoTracking();
|
||||
q = q.Where(z => z.AyId == opt.AyId && z.AyaType == opt.AyaType);
|
||||
q = q.OrderByDescending(z => z.Created);
|
||||
q = q.Skip(offset).Take(limit);
|
||||
|
||||
//Execute the query
|
||||
@@ -68,13 +68,13 @@ namespace AyaNova.Biz
|
||||
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
||||
{
|
||||
ct.Database.OpenConnection();
|
||||
ret.Events = EventItems.Select(m => new AyaNova.Api.Controllers.EventLogController.ObjectEventLogItem()
|
||||
ret.Events = EventItems.Select(z => new AyaNova.Api.Controllers.EventLogController.ObjectEventLogItem()
|
||||
{
|
||||
Date = m.Created,
|
||||
UserId = m.UserId,
|
||||
Event = m.AyEvent,
|
||||
Textra = m.Textra,
|
||||
Name = BizObjectNameFetcherDirect.Name(AyaType.User, m.UserId, command)
|
||||
Date = z.Created,
|
||||
UserId = z.UserId,
|
||||
Event = z.AyEvent,
|
||||
Textra = z.Textra,
|
||||
Name = BizObjectNameFetcherDirect.Name(AyaType.User, z.UserId, command)
|
||||
}).ToArray();
|
||||
|
||||
ret.Name = BizObjectNameFetcherDirect.Name(opt.AyaType, opt.AyId, command);
|
||||
@@ -95,13 +95,11 @@ namespace AyaNova.Biz
|
||||
var limit = opt.Limit ?? DEFAULT_EVENT_LIMIT;
|
||||
var offset = opt.Offset ?? 0;
|
||||
//Set up the query
|
||||
// var q = ct.Event.Select(m => m).Skip(offset).Take(limit).AsNoTracking();
|
||||
// q = q.Where(m => m.UserId == opt.UserId);
|
||||
// q = q.OrderByDescending(m => m.Created);
|
||||
|
||||
|
||||
var q = ct.Event.Select(m => m).AsNoTracking();
|
||||
q = q.Where(m => m.UserId == opt.UserId);
|
||||
q = q.OrderByDescending(m => m.Created);
|
||||
var q = ct.Event.Select(z => z).AsNoTracking();
|
||||
q = q.Where(z => z.UserId == opt.UserId);
|
||||
q = q.OrderByDescending(z => z.Created);
|
||||
q = q.Skip(offset).Take(limit);
|
||||
|
||||
|
||||
@@ -111,15 +109,15 @@ namespace AyaNova.Biz
|
||||
{
|
||||
ct.Database.OpenConnection();
|
||||
//convert the Event array to the correct return type array
|
||||
ret.Events = EventItems.Select(m => new AyaNova.Api.Controllers.EventLogController.UserEventLogItem()
|
||||
ret.Events = EventItems.Select(z => new AyaNova.Api.Controllers.EventLogController.UserEventLogItem()
|
||||
{
|
||||
|
||||
Date = m.Created,
|
||||
ObjectType = m.AyaType,
|
||||
ObjectId = m.AyId,
|
||||
Event = m.AyEvent,
|
||||
Textra = m.Textra,
|
||||
Name = BizObjectNameFetcherDirect.Name(m.AyaType, m.AyId, command)
|
||||
Date = z.Created,
|
||||
ObjectType = z.AyaType,
|
||||
ObjectId = z.AyId,
|
||||
Event = z.AyEvent,
|
||||
Textra = z.Textra,
|
||||
Name = BizObjectNameFetcherDirect.Name(z.AyaType, z.AyId, command)
|
||||
|
||||
}).ToArray();
|
||||
ret.Name = BizObjectNameFetcherDirect.Name(AyaType.User, opt.UserId, command);
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(string formKey)
|
||||
{
|
||||
return await ct.FormCustom.AnyAsync(x => x.FormKey == formKey);
|
||||
return await ct.FormCustom.AnyAsync(z => z.FormKey == formKey);
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace AyaNova.Biz
|
||||
//Step 1: check if exists, if it does then just return it
|
||||
if (await ExistsAsync(formKey))
|
||||
{
|
||||
return await ct.FormCustom.SingleOrDefaultAsync(m => m.FormKey == formKey);
|
||||
return await ct.FormCustom.SingleOrDefaultAsync(z => z.FormKey == formKey);
|
||||
}
|
||||
|
||||
//If it doesn't exist, vet the form key name is ok by checking with this list
|
||||
@@ -168,7 +168,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("FormKey") && isNew)
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.FormCustom.AnyAsync(m => m.FormKey == inObj.FormKey && m.Id != inObj.Id))
|
||||
if (await ct.FormCustom.AnyAsync(z => z.FormKey == inObj.FormKey && z.Id != inObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "FormKey");
|
||||
}
|
||||
@@ -210,13 +210,13 @@ namespace AyaNova.Biz
|
||||
if (ValidFormFields != null)
|
||||
{
|
||||
|
||||
if (!ValidFormFields.Exists(x => x.FieldKey == fldKey))
|
||||
if (!ValidFormFields.Exists(z => z.FieldKey == fldKey))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Template", $"Template array item {i}, fld property value \"{fldKey}\" is not a valid form field value for formKey specified");
|
||||
}
|
||||
else
|
||||
{
|
||||
MasterFormField = ValidFormFields.FirstOrDefault(x => x.FieldKey == fldKey);
|
||||
MasterFormField = ValidFormFields.FirstOrDefault(z => z.FieldKey == fldKey);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.HeadOffice.AnyAsync(e => e.Id == id);
|
||||
return await ct.HeadOffice.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.HeadOffice.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.HeadOffice.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<HeadOffice> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.HeadOffice.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<HeadOffice> PutAsync(HeadOffice putObject)
|
||||
{
|
||||
HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(m => m.Id == id);
|
||||
HeadOffice dbObject = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.HeadOffice.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.HeadOffice.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.HeadOffice.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.HeadOffice.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.HeadOffice.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.HeadOffice.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -40,15 +40,15 @@ namespace AyaNova.Biz
|
||||
List<JobOperationsFetchInfo> ret = new List<JobOperationsFetchInfo>();
|
||||
|
||||
var jobitems = await ct.OpsJob
|
||||
.OrderBy(m => m.Created)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
foreach (OpsJob i in jobitems)
|
||||
{
|
||||
//fetch the most recent log time for each job
|
||||
var mostRecentLogItem = await ct.OpsJobLog
|
||||
.Where(c => c.JobId == i.GId)
|
||||
.OrderByDescending(t => t.Created)
|
||||
.Where(z => z.JobId == i.GId)
|
||||
.OrderByDescending(z => z.Created)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
JobOperationsFetchInfo o = new JobOperationsFetchInfo();
|
||||
@@ -75,8 +75,8 @@ namespace AyaNova.Biz
|
||||
List<JobOperationsLogInfoItem> ret = new List<JobOperationsLogInfoItem>();
|
||||
|
||||
var l = await ct.OpsJobLog
|
||||
.Where(c => c.JobId == jobId)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.JobId == jobId)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
foreach (OpsJobLog i in l)
|
||||
|
||||
@@ -28,8 +28,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
return await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.ObjectId == ayObj.ObjectId && c.ObjectType == ayObj.ObjectType)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.ObjectId == ayObj.ObjectId && z.ObjectType == ayObj.ObjectType)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
@@ -63,8 +63,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
var ret = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.StartAfter < System.DateTime.UtcNow && c.Exclusive == exclusiveOnly && c.JobStatus == JobStatus.Sleeping)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.StartAfter < System.DateTime.UtcNow && z.Exclusive == exclusiveOnly && z.JobStatus == JobStatus.Sleeping)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
return ret;
|
||||
@@ -80,8 +80,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
var ret = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.JobStatus == JobStatus.Sleeping || c.JobStatus == JobStatus.Running)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.JobStatus == JobStatus.Sleeping || z.JobStatus == JobStatus.Running)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
return ret;
|
||||
@@ -96,8 +96,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
var ret = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.JobType == jobType)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.JobType == jobType)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
return ret;
|
||||
@@ -112,8 +112,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
var ret = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.JobStatus == JobStatus.Sleeping || c.JobStatus == JobStatus.Running)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.JobStatus == JobStatus.Sleeping || z.JobStatus == JobStatus.Running)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
return ret;
|
||||
@@ -127,7 +127,7 @@ namespace AyaNova.Biz
|
||||
internal static async Task<long> GetCountForJobStatusAsync(AyContext ct, JobStatus jobStatus)
|
||||
{
|
||||
var ret = await ct.OpsJob
|
||||
.Where(c => c.JobStatus == jobStatus)
|
||||
.Where(z => z.JobStatus == jobStatus)
|
||||
.LongCountAsync();
|
||||
return ret;
|
||||
}
|
||||
@@ -274,7 +274,7 @@ namespace AyaNova.Biz
|
||||
/// <param name="ct"></param>
|
||||
internal static async Task<OpsJob> UpdateJobStatusAsync(Guid jobId, JobStatus newStatus, AyContext ct)
|
||||
{
|
||||
var oFromDb = await ct.OpsJob.SingleOrDefaultAsync(m => m.GId == jobId);
|
||||
var oFromDb = await ct.OpsJob.SingleOrDefaultAsync(z => z.GId == jobId);
|
||||
if (oFromDb == null) return null;
|
||||
oFromDb.JobStatus = newStatus;
|
||||
await ct.SaveChangesAsync();
|
||||
@@ -332,7 +332,7 @@ namespace AyaNova.Biz
|
||||
//also have to deal with db object etc, I guess they'd have to instantiate themselves to avoid disposed object being used error
|
||||
//This area may turn out to need a re-write in future, but I think it might only involve this block and ProcessJobAsync
|
||||
//the actual individual objects that are responsible for jobs will likely not need a signature rewrite or anything (I hope)
|
||||
//For now I'm hoping that no job will be so slow that it can hold up all the other jobs indefinitely.
|
||||
//For now I'z hoping that no job will be so slow that it can hold up all the other jobs indefinitely.
|
||||
|
||||
List<OpsJob> sharedJobs = await GetReadyJobsNotExlusiveOnlyAsync(ct);
|
||||
foreach (OpsJob j in sharedJobs)
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.LoanUnit.AnyAsync(e => e.Id == id);
|
||||
return await ct.LoanUnit.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.LoanUnit.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.LoanUnit.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<LoanUnit> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.LoanUnit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.LoanUnit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<LoanUnit> PutAsync(LoanUnit putObject)
|
||||
{
|
||||
LoanUnit dbObject = await ct.LoanUnit.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
LoanUnit dbObject = await ct.LoanUnit.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
LoanUnit dbObject = await ct.LoanUnit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
LoanUnit dbObject = await ct.LoanUnit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.LoanUnit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.LoanUnit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.LoanUnit.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.LoanUnit.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.LoanUnit.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.LoanUnit.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.PM.AnyAsync(e => e.Id == id);
|
||||
return await ct.PM.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -48,7 +48,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<PM> GetAsync(long fetchId, bool logTheGetEvent = true)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var ret = await ct.PM.SingleOrDefaultAsync(m => m.Id == fetchId);
|
||||
var ret = await ct.PM.SingleOrDefaultAsync(z => z.Id == fetchId);
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -119,7 +119,7 @@ namespace AyaNova.Biz
|
||||
// do
|
||||
// {
|
||||
// newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255);
|
||||
// NotUnique = await ct.PM.AnyAsync(m => m.Name == newUniqueName);
|
||||
// NotUnique = await ct.PM.AnyAsync(z => z.Name == newUniqueName);
|
||||
// } while (NotUnique);
|
||||
|
||||
// outObj.Name = newUniqueName;
|
||||
@@ -196,7 +196,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.PM.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.PM.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Serial).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -250,7 +250,7 @@ namespace AyaNova.Biz
|
||||
// if (!PropertyHasErrors("Name"))
|
||||
// {
|
||||
// //Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
// if (await ct.PM.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
// if (await ct.PM.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
// {
|
||||
// AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
// }
|
||||
@@ -258,7 +258,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.PM.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PM.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.PMTemplate.AnyAsync(e => e.Id == id);
|
||||
return await ct.PMTemplate.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.PMTemplate.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.PMTemplate.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<PMTemplate> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.PMTemplate.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.PMTemplate.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<PMTemplate> PutAsync(PMTemplate putObject)
|
||||
{
|
||||
PMTemplate dbObject = await ct.PMTemplate.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
PMTemplate dbObject = await ct.PMTemplate.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
PMTemplate dbObject = await ct.PMTemplate.SingleOrDefaultAsync(m => m.Id == id);
|
||||
PMTemplate dbObject = await ct.PMTemplate.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.PMTemplate.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.PMTemplate.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.PMTemplate.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.PMTemplate.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.PMTemplate.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PMTemplate.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Part.AnyAsync(e => e.Id == id);
|
||||
return await ct.Part.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace AyaNova.Biz
|
||||
long lTypeId = (long)ayaType;
|
||||
|
||||
//first try to fetch from db
|
||||
var ret = await ct.PickListTemplate.SingleOrDefaultAsync(m => m.Id == lTypeId);
|
||||
var ret = await ct.PickListTemplate.SingleOrDefaultAsync(z => z.Id == lTypeId);
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -128,7 +128,7 @@ namespace AyaNova.Biz
|
||||
//Final fixup if user specifies tag query but there are not tags on this object then
|
||||
//rather than error just accept it as a no tag query
|
||||
//Note: it's not valid to have more than one field with tags in the picklist definition so this works
|
||||
if (PickList.ColumnDefinitions.FirstOrDefault(x => x.ColumnDataType == UiFieldDataType.Tags) == null)
|
||||
if (PickList.ColumnDefinitions.FirstOrDefault(z => z.ColumnDataType == UiFieldDataType.Tags) == null)
|
||||
{
|
||||
TagSpecificQuery = null;
|
||||
}
|
||||
@@ -155,7 +155,7 @@ namespace AyaNova.Biz
|
||||
//put
|
||||
internal async Task<bool> ReplaceAsync(PickListTemplate template)
|
||||
{
|
||||
var o = await ct.PickListTemplate.FirstOrDefaultAsync(m => m.Id == (long)template.Id);
|
||||
var o = await ct.PickListTemplate.FirstOrDefaultAsync(z => z.Id == (long)template.Id);
|
||||
bool bAdd = false;
|
||||
if (o == null)
|
||||
{
|
||||
@@ -191,7 +191,7 @@ namespace AyaNova.Biz
|
||||
//REMOVE ANY RECORD WITH SAME AYATYPE ID
|
||||
long lTypeId = (long)ayaType;
|
||||
|
||||
var o = await ct.PickListTemplate.FirstOrDefaultAsync(m => m.Id == lTypeId);
|
||||
var o = await ct.PickListTemplate.FirstOrDefaultAsync(z => z.Id == lTypeId);
|
||||
if (o != null)
|
||||
{
|
||||
ct.PickListTemplate.Remove(o);
|
||||
@@ -248,7 +248,7 @@ namespace AyaNova.Biz
|
||||
if (PickList != null)
|
||||
{
|
||||
|
||||
var TheField = PickList.ColumnDefinitions.SingleOrDefault(x => x.FieldKey.ToLowerInvariant() == fld);
|
||||
var TheField = PickList.ColumnDefinitions.SingleOrDefault(z => z.FieldKey.ToLowerInvariant() == fld);
|
||||
|
||||
if (TheField == null)
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Project.AnyAsync(e => e.Id == id);
|
||||
return await ct.Project.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.PurchaseOrder.AnyAsync(e => e.Id == id);
|
||||
return await ct.PurchaseOrder.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.PurchaseOrder.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.PurchaseOrder.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<PurchaseOrder> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.PurchaseOrder.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<PurchaseOrder> PutAsync(PurchaseOrder putObject)
|
||||
{
|
||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(m => m.Id == id);
|
||||
PurchaseOrder dbObject = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.PurchaseOrder.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.PurchaseOrder.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.PurchaseOrder.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.PurchaseOrder.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.PurchaseOrder.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.PurchaseOrder.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Quote.AnyAsync(e => e.Id == id);
|
||||
return await ct.Quote.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -48,7 +48,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<Quote> GetAsync(long fetchId, bool logTheGetEvent = true)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var ret = await ct.Quote.SingleOrDefaultAsync(m => m.Id == fetchId);
|
||||
var ret = await ct.Quote.SingleOrDefaultAsync(z => z.Id == fetchId);
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -119,7 +119,7 @@ namespace AyaNova.Biz
|
||||
// do
|
||||
// {
|
||||
// newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255);
|
||||
// NotUnique = await ct.Quote.AnyAsync(m => m.Name == newUniqueName);
|
||||
// NotUnique = await ct.Quote.AnyAsync(z => z.Name == newUniqueName);
|
||||
// } while (NotUnique);
|
||||
|
||||
// outObj.Name = newUniqueName;
|
||||
@@ -196,7 +196,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.Quote.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.Quote.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Serial).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -251,7 +251,7 @@ namespace AyaNova.Biz
|
||||
// if (!PropertyHasErrors("Name"))
|
||||
// {
|
||||
// //Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
// if (await ct.Quote.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
// if (await ct.Quote.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
// {
|
||||
// AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
// }
|
||||
@@ -259,7 +259,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Quote.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.Quote.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.QuoteTemplate.AnyAsync(e => e.Id == id);
|
||||
return await ct.QuoteTemplate.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -46,7 +46,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<QuoteTemplate> GetAsync(long fetchId, bool logTheGetEvent = true)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var ret = await ct.QuoteTemplate.SingleOrDefaultAsync(m => m.Id == fetchId);
|
||||
var ret = await ct.QuoteTemplate.SingleOrDefaultAsync(z => z.Id == fetchId);
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -104,7 +104,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255);
|
||||
NotUnique = await ct.QuoteTemplate.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.QuoteTemplate.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
|
||||
outObj.Name = newUniqueName;
|
||||
@@ -173,7 +173,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.QuoteTemplate.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.QuoteTemplate.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -226,7 +226,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.QuoteTemplate.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.QuoteTemplate.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -234,7 +234,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.QuoteTemplate.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.QuoteTemplate.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace AyaNova.Biz
|
||||
var FormTemplate = JArray.Parse(formCustom.Template);
|
||||
// var FormTemplate=(JArray)OuterJson["template"];
|
||||
var FormFields = AyaFormFieldDefinitions.AyaFormFields(formCustom.FormKey);
|
||||
// var ThisFormNormalFieldsList = FormFields.Where(x => x.Custom == false).Select(x => x.Key).ToList();
|
||||
// var ThisFormNormalFieldsList = FormFields.Where(z => z.Custom == false).Select(z => z.Key).ToList();
|
||||
|
||||
foreach (JObject jo in FormTemplate)
|
||||
{
|
||||
@@ -30,7 +30,7 @@ namespace AyaNova.Biz
|
||||
// - e.g.: {template:[{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"bool"},{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"text"]}
|
||||
|
||||
//get the FormField object
|
||||
AyaFormFieldDefinition FF = FormFields.Where(x => x.FieldKey == FldLtKey).Single();
|
||||
AyaFormFieldDefinition FF = FormFields.Where(z => z.FieldKey == FldLtKey).Single();
|
||||
|
||||
//don't validate custom fields, just skip them
|
||||
// if (!string.IsNullOrWhiteSpace(FF.PropertyName))//this used to work because there would be no property name but now there is so it doesn't
|
||||
|
||||
@@ -153,7 +153,7 @@ namespace AyaNova.Biz
|
||||
if (SearchTerms.Count > 0)
|
||||
foreach (string Term in SearchTerms)
|
||||
{
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(m => m.Word.Contains(Term)).Select(m => m.Id).ToListAsync());
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(z => z.Word.Contains(Term)).Select(z => z.Id).ToListAsync());
|
||||
}
|
||||
|
||||
|
||||
@@ -166,15 +166,15 @@ namespace AyaNova.Biz
|
||||
//Contains?
|
||||
if (WildCardSearchTerm.StartsWith("%") && WildCardSearchTerm.EndsWith("%"))
|
||||
{
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(m => m.Word.Contains(WildCardSearchTerm.Replace("%", ""))).Select(m => m.Id).ToListAsync());
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(z => z.Word.Contains(WildCardSearchTerm.Replace("%", ""))).Select(z => z.Id).ToListAsync());
|
||||
}
|
||||
else if (WildCardSearchTerm.EndsWith("%")) //STARTS WITH?
|
||||
{
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(m => m.Word.StartsWith(WildCardSearchTerm.Replace("%", ""))).Select(m => m.Id).ToListAsync());
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(z => z.Word.StartsWith(WildCardSearchTerm.Replace("%", ""))).Select(z => z.Id).ToListAsync());
|
||||
}
|
||||
else if (WildCardSearchTerm.StartsWith("%"))//ENDS WITH?
|
||||
{
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(m => m.Word.EndsWith(WildCardSearchTerm.Replace("%", ""))).Select(m => m.Id).ToListAsync());
|
||||
DictionaryMatches.AddRange(await ct.SearchDictionary.Where(z => z.Word.EndsWith(WildCardSearchTerm.Replace("%", ""))).Select(z => z.Id).ToListAsync());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -183,16 +183,16 @@ namespace AyaNova.Biz
|
||||
var TotalSearchTermsToMatch = PreWildCardedSearchTerms.Count + SearchTerms.Count;
|
||||
|
||||
//Build search query based on searchParameters
|
||||
var q = ct.SearchKey.Distinct().Where(x => DictionaryMatches.Contains(x.WordId));
|
||||
var q = ct.SearchKey.Distinct().Where(z => DictionaryMatches.Contains(z.WordId));
|
||||
|
||||
|
||||
//Of type?
|
||||
if (searchParameters.TypeOnly != AyaType.NoType)
|
||||
q = q.Where(m => m.ObjectType == searchParameters.TypeOnly);
|
||||
q = q.Where(z => z.ObjectType == searchParameters.TypeOnly);
|
||||
|
||||
|
||||
//Find the records that have the search terms in searchkey
|
||||
var SearchMatches = q.GroupBy(x => new { x.ObjectType, x.ObjectId }).Select(x => new { ObjectId = x.Key.ObjectId, ObjectType = x.Key.ObjectType, ObjectCount = x.LongCount() });
|
||||
var SearchMatches = q.GroupBy(z => new { z.ObjectType, z.ObjectId }).Select(z => new { ObjectId = z.Key.ObjectId, ObjectType = z.Key.ObjectType, ObjectCount = z.LongCount() });
|
||||
|
||||
|
||||
//PUT THE RESULTS INTO MATCHING OBJECTS LIST
|
||||
@@ -231,8 +231,8 @@ namespace AyaNova.Biz
|
||||
MatchingObjects = MatchingObjects.Take(searchParameters.MaxResults).ToList();
|
||||
|
||||
//Sort and group the matching objects list in return order
|
||||
//zCzustomer.OrderBy(c => c.LastName).ThenBy(c => c.FirstName)
|
||||
var OrderedMatchingObjects = MatchingObjects.OrderBy(x => x.ObjectType).ThenByDescending(x => x.ObjectId);
|
||||
//zCzustomer.OrderBy(z => z.LastName).ThenBy(z => z.FirstName)
|
||||
var OrderedMatchingObjects = MatchingObjects.OrderBy(z => z.ObjectType).ThenByDescending(z => z.ObjectId);
|
||||
|
||||
|
||||
|
||||
@@ -545,27 +545,27 @@ namespace AyaNova.Biz
|
||||
//slide a window over the text and check it's score, the highest scoring window wins
|
||||
//move the length of the shortest search term so as to ensure we won't
|
||||
//miss it, but faster than moving one character at a time
|
||||
for (int x = 0; x < this.rawtext.Length - maximumCharactersToExtract; x += shortestSearchTermLength)
|
||||
for (int z = 0; z < this.rawtext.Length - maximumCharactersToExtract; z += shortestSearchTermLength)
|
||||
{
|
||||
thisscore = score(x, x + (maximumCharactersToExtract));
|
||||
thisscore = score(z, z + (maximumCharactersToExtract));
|
||||
|
||||
if (thisscore == 0) continue;
|
||||
|
||||
if (thisscore > BestScore)
|
||||
{
|
||||
BestScore = thisscore;
|
||||
BestWindow = this.rawtext.Substring(x, maximumCharactersToExtract);
|
||||
BestWindow = this.rawtext.Substring(z, maximumCharactersToExtract);
|
||||
//Best window to get if the future score is equal
|
||||
//I.E. put the terms in the center of the window if
|
||||
//the score is equal
|
||||
BestWindowStartPos = x + (maximumCharactersToExtract / 2);
|
||||
BestWindowStartPos = z + (maximumCharactersToExtract / 2);
|
||||
}
|
||||
|
||||
//If it's equal to the last and we're positioned over
|
||||
//the best spot (terms in center) then capture that
|
||||
if (thisscore == BestScore && x == BestWindowStartPos)
|
||||
if (thisscore == BestScore && z == BestWindowStartPos)
|
||||
{
|
||||
BestWindow = this.rawtext.Substring(x, maximumCharactersToExtract);
|
||||
BestWindow = this.rawtext.Substring(z, maximumCharactersToExtract);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -732,7 +732,7 @@ namespace AyaNova.Biz
|
||||
List<long> MatchingKeywordIdList = new List<long>();
|
||||
|
||||
//ITERATE ALL THE KEYWORDS, SEARCH IN THE SEARCHDICTIONARY TABLE AND COLLECT ID'S OF ANY PRE-EXISTING IN DB KEYWORDS
|
||||
var ExistingKeywordMatches = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => KeyWordList.Contains(m.Word)).ToDictionaryAsync(m => m.Id, m => m.Word);
|
||||
var ExistingKeywordMatches = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(z => KeyWordList.Contains(z.Word)).ToDictionaryAsync(z => z.Id, z => z.Word);
|
||||
/*example of above query, returns a list of words and ids
|
||||
SELECT a.id, a.xmin, a.word
|
||||
FROM asearchdictionary AS a
|
||||
@@ -858,7 +858,7 @@ cache or provide directly the translation to save time repeatedly fetching it wh
|
||||
}
|
||||
|
||||
//FETCH THE WORD ID, PLACE IN MATCHINGKEYWORDLIST AND MOVE ON TO THE NEXT WORD
|
||||
var SearchDictionaryMatchFoundInDB = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(x => x.Word == KeyWord).FirstOrDefaultAsync();
|
||||
var SearchDictionaryMatchFoundInDB = await ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(z => z.Word == KeyWord).FirstOrDefaultAsync();
|
||||
if (SearchDictionaryMatchFoundInDB != null)
|
||||
{
|
||||
MatchingKeywordIdList.Add(SearchDictionaryMatchFoundInDB.Id);
|
||||
@@ -932,11 +932,11 @@ cache or provide directly the translation to save time repeatedly fetching it wh
|
||||
// //iterate all Translations, cache the word break data
|
||||
// l = await ct.Translation
|
||||
// .AsNoTracking()
|
||||
// .OrderBy(m => m.Name)
|
||||
// .Select(m => new NameIdItem()
|
||||
// .OrderBy(z => z.Name)
|
||||
// .Select(z => new NameIdItem()
|
||||
// {
|
||||
// Id = m.Id,
|
||||
// Name = m.Name
|
||||
// Id = z.Id,
|
||||
// Name = z.Name
|
||||
// }).ToListAsync();
|
||||
// TranslationWordBreakingDataCache.Add(TranslationId, await GetTranslationSearchDataAsync(TranslationId));
|
||||
// }
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
//START: Get tag word and concurrency token and count
|
||||
var ExistingTag = await ct.Tag.FirstOrDefaultAsync(x => x.Name == s);
|
||||
var ExistingTag = await ct.Tag.FirstOrDefaultAsync(z => z.Name == s);
|
||||
//if not present, then nothing to do
|
||||
if (ExistingTag != null)
|
||||
{
|
||||
@@ -153,7 +153,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
//START: Get tag word and concurrency token and count
|
||||
var ExistingTag = await ct.Tag.FirstOrDefaultAsync(x => x.Name == s);
|
||||
var ExistingTag = await ct.Tag.FirstOrDefaultAsync(z => z.Name == s);
|
||||
//if not present, then add it with a count of 0
|
||||
if (ExistingTag == null)
|
||||
{
|
||||
@@ -191,8 +191,8 @@ namespace AyaNova.Biz
|
||||
//however the client will always require a filter to display a tag list for choosing from
|
||||
if (string.IsNullOrWhiteSpace(q))
|
||||
{
|
||||
return await ct.Tag.OrderBy(x => x.Name)
|
||||
.Select(x => x.Name)
|
||||
return await ct.Tag.OrderBy(z => z.Name)
|
||||
.Select(z => z.Name)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
}
|
||||
@@ -200,9 +200,9 @@ namespace AyaNova.Biz
|
||||
{
|
||||
q = NormalizeTag(q);
|
||||
return await ct.Tag
|
||||
.Where(x => x.Name.Contains(q))
|
||||
.OrderBy(x => x.Name)
|
||||
.Select(x => x.Name)
|
||||
.Where(z => z.Name.Contains(q))
|
||||
.OrderBy(z => z.Name)
|
||||
.Select(z => z.Name)
|
||||
.Take(25)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
@@ -216,7 +216,7 @@ namespace AyaNova.Biz
|
||||
//however the client will always require a filter to display a tag list for choosing from
|
||||
if (string.IsNullOrWhiteSpace(q))
|
||||
{
|
||||
return await ct.Tag.OrderByDescending(x => x.RefCount).Select(x => new TagCloudItem() { Name = x.Name, RefCount = x.RefCount }).AsNoTracking().ToListAsync();
|
||||
return await ct.Tag.OrderByDescending(z => z.RefCount).Select(z => new TagCloudItem() { Name = z.Name, RefCount = z.RefCount }).AsNoTracking().ToListAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -224,9 +224,9 @@ namespace AyaNova.Biz
|
||||
//TODO: Use the EF CORE TAKE method to restrict the results to a maximum limit
|
||||
//however need to ensure it doesn't balk when the limit is higher than the number of results (probably not but test that)
|
||||
return await ct.Tag
|
||||
.Where(x => x.Name.Contains(q))
|
||||
.OrderByDescending(x => x.RefCount)
|
||||
.Select(x => new TagCloudItem() { Name = x.Name, RefCount = x.RefCount })
|
||||
.Where(z => z.Name.Contains(q))
|
||||
.OrderByDescending(z => z.RefCount)
|
||||
.Select(z => new TagCloudItem() { Name = z.Name, RefCount = z.RefCount })
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace AyaNova.Biz
|
||||
return null;
|
||||
|
||||
//fetch the existing translation for duplication
|
||||
var SourceTranslation = await ct.Translation.Include(x => x.TranslationItems).SingleOrDefaultAsync(m => m.Id == inObj.Id);
|
||||
var SourceTranslation = await ct.Translation.Include(z => z.TranslationItems).SingleOrDefaultAsync(z => z.Id == inObj.Id);
|
||||
|
||||
//replicate the source to a new dest and save
|
||||
Translation NewTranslation = new Translation();
|
||||
@@ -83,7 +83,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<Translation> GetAsync(long fetchId)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
return await ct.Translation.Include(x => x.TranslationItems).SingleOrDefaultAsync(m => m.Id == fetchId);
|
||||
return await ct.Translation.Include(z => z.TranslationItems).SingleOrDefaultAsync(z => z.Id == fetchId);
|
||||
}
|
||||
|
||||
|
||||
@@ -94,11 +94,11 @@ namespace AyaNova.Biz
|
||||
List<NameIdItem> l = new List<NameIdItem>();
|
||||
l = await ct.Translation
|
||||
.AsNoTracking()
|
||||
.OrderBy(m => m.Name)
|
||||
.Select(m => new NameIdItem()
|
||||
.OrderBy(z => z.Name)
|
||||
.Select(z => new NameIdItem()
|
||||
{
|
||||
Id = m.Id,
|
||||
Name = m.Name
|
||||
Id = z.Id,
|
||||
Name = z.Name
|
||||
}).ToListAsync();
|
||||
|
||||
return l;
|
||||
@@ -154,7 +154,7 @@ namespace AyaNova.Biz
|
||||
#if (DEBUG)
|
||||
TrackRequestedKey(param);
|
||||
#endif
|
||||
var ret = await ct.TranslationItem.Where(x => x.TranslationId == UserTranslationId && param.Contains(x.Key)).ToDictionaryAsync(x => x.Key, x => x.Display);
|
||||
var ret = await ct.TranslationItem.Where(z => z.TranslationId == UserTranslationId && param.Contains(z.Key)).ToDictionaryAsync(z => z.Key, z => z.Display);
|
||||
return ret.ToList();
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ namespace AyaNova.Biz
|
||||
|
||||
if (!await ct.Translation.AnyAsync(e => e.Id == translationId))
|
||||
translationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
|
||||
var ret = await ct.TranslationItem.Where(x => x.TranslationId == translationId && param.Contains(x.Key)).AsNoTracking().ToDictionaryAsync(x => x.Key, x => x.Display);
|
||||
var ret = await ct.TranslationItem.Where(z => z.TranslationId == translationId && param.Contains(z.Key)).AsNoTracking().ToDictionaryAsync(z => z.Key, z => z.Display);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
if (ct == null)
|
||||
ct = ServiceProviderProvider.DBContext;
|
||||
var ret = await ct.Translation.Where(x => x.Id == translationId).AsNoTracking().Select(m => m.CjkIndex).SingleOrDefaultAsync();
|
||||
var ret = await ct.Translation.Where(z => z.Id == translationId).AsNoTracking().Select(z => z.CjkIndex).SingleOrDefaultAsync();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -196,14 +196,14 @@ namespace AyaNova.Biz
|
||||
TrackRequestedKey(key);
|
||||
#endif
|
||||
AyContext ct = ServiceProviderProvider.DBContext;
|
||||
return await ct.TranslationItem.Where(m => m.TranslationId == ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID && m.Key == key).Select(m => m.Display).AsNoTracking().FirstOrDefaultAsync();
|
||||
return await ct.TranslationItem.Where(z => z.TranslationId == ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID && z.Key == key).Select(z => z.Display).AsNoTracking().FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
//Get all stock keys that are valid (used for key coverage reporting)
|
||||
internal static async Task<List<string>> GetKeyListAsync()
|
||||
{
|
||||
AyContext ct = ServiceProviderProvider.DBContext;
|
||||
return await ct.TranslationItem.Where(m => m.TranslationId == 1).OrderBy(m => m.Key).Select(m => m.Key).AsNoTracking().ToListAsync();
|
||||
return await ct.TranslationItem.Where(z => z.TranslationId == 1).OrderBy(z => z.Key).Select(z => z.Key).AsNoTracking().ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@ namespace AyaNova.Biz
|
||||
|
||||
foreach (NewTextIdConcurrencyTokenItem tit in inObj)
|
||||
{
|
||||
var titem = await ct.TranslationItem.SingleOrDefaultAsync(m => m.Id == tit.Id);
|
||||
var titem = await ct.TranslationItem.SingleOrDefaultAsync(z => z.Id == tit.Id);
|
||||
if (titem == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, $"Translation item ID {tit.Id}");
|
||||
@@ -347,7 +347,7 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.VALIDATION_LENGTH_EXCEEDED, "Name", "255 char max");
|
||||
|
||||
//Name must be unique
|
||||
if (await ct.Translation.AnyAsync(m => m.Name == inObjName))
|
||||
if (await ct.Translation.AnyAsync(z => z.Name == inObjName))
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
|
||||
return;
|
||||
@@ -387,7 +387,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<long> TranslationNameToIdAsync(string translationName)
|
||||
{
|
||||
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(c => c.Name == translationName);
|
||||
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(z => z.Name == translationName);
|
||||
if (v == null) return 0;
|
||||
return v.Id;
|
||||
}
|
||||
@@ -398,20 +398,20 @@ namespace AyaNova.Biz
|
||||
{
|
||||
ct = ServiceProviderProvider.DBContext;
|
||||
}
|
||||
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(c => c.Name == translationName);
|
||||
var v = await ct.Translation.AsNoTracking().FirstOrDefaultAsync(z => z.Name == translationName);
|
||||
if (v == null) return ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
|
||||
return v.Id;
|
||||
}
|
||||
|
||||
public async Task<bool> TranslationExistsAsync(string translationName)
|
||||
{
|
||||
return await ct.Translation.AnyAsync(c => c.Name == translationName);
|
||||
return await ct.Translation.AnyAsync(z => z.Name == translationName);
|
||||
|
||||
}
|
||||
|
||||
public async Task<bool> TranslationExistsAsync(long id)
|
||||
{
|
||||
return await ct.Translation.AnyAsync(e => e.Id == id);
|
||||
return await ct.Translation.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
|
||||
@@ -419,14 +419,14 @@ namespace AyaNova.Biz
|
||||
//this is only called by Search.cs to cache a local cjk and stopwords, no one else calls it currently
|
||||
public static async Task<long> ReturnSpecifiedTranslationIdIfExistsOrDefaultTranslationId(long id, AyContext ct)
|
||||
{
|
||||
if (!await ct.Translation.AnyAsync(e => e.Id == id))
|
||||
if (!await ct.Translation.AnyAsync(z => z.Id == id))
|
||||
return ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
|
||||
return id;
|
||||
}
|
||||
|
||||
public async Task<bool> TranslationItemExistsAsync(long id)
|
||||
{
|
||||
return await ct.TranslationItem.AnyAsync(e => e.Id == id);
|
||||
return await ct.TranslationItem.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Unit.AnyAsync(e => e.Id == id);
|
||||
return await ct.Unit.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.Unit.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.Unit.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Unit> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.Unit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Unit> PutAsync(Unit putObject)
|
||||
{
|
||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
Unit dbObject = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.Unit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.Unit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.Unit.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.Unit.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Unit.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.Unit.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.UnitModel.AnyAsync(e => e.Id == id);
|
||||
return await ct.UnitModel.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.UnitModel.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.UnitModel.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<UnitModel> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.UnitModel.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.UnitModel.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<UnitModel> PutAsync(UnitModel putObject)
|
||||
{
|
||||
UnitModel dbObject = await ct.UnitModel.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
UnitModel dbObject = await ct.UnitModel.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
UnitModel dbObject = await ct.UnitModel.SingleOrDefaultAsync(m => m.Id == id);
|
||||
UnitModel dbObject = await ct.UnitModel.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.UnitModel.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.UnitModel.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.UnitModel.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.UnitModel.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.UnitModel.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.UnitModel.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -32,9 +32,9 @@ namespace AyaNova.Biz
|
||||
internal static async Task<long> ActiveCountAsync()
|
||||
{
|
||||
var ct = ServiceProviderProvider.DBContext;
|
||||
var ret = await ct.User.Where(x => x.Active == true && (
|
||||
x.UserType == UserType.Service ||
|
||||
x.UserType == UserType.ServiceContractor)).LongCountAsync();
|
||||
var ret = await ct.User.Where(z => z.Active == true && (
|
||||
z.UserType == UserType.Service ||
|
||||
z.UserType == UserType.ServiceContractor)).LongCountAsync();
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.User.AnyAsync(e => e.Id == id);
|
||||
return await ct.User.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -127,7 +127,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var dbFullUser = await ct.User.SingleOrDefaultAsync(m => m.Id == Id);
|
||||
var dbFullUser = await ct.User.SingleOrDefaultAsync(z => z.Id == Id);
|
||||
if (dbFullUser != null)
|
||||
{
|
||||
//Log
|
||||
@@ -149,7 +149,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<User> PutAsync(User putObject)
|
||||
{
|
||||
User dbObject = await ct.User.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
User dbObject = await ct.User.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -214,7 +214,7 @@ namespace AyaNova.Biz
|
||||
// //put
|
||||
// internal async Task<User> PutAsync(User putObject)
|
||||
// {
|
||||
// User dbObject = await ct.User.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
// User dbObject = await ct.User.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
// if (dbObject == null)
|
||||
// {
|
||||
// AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -280,7 +280,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> ChangePasswordAsync(long userId, string newPassword)
|
||||
{
|
||||
User dbObj = await ct.User.FirstOrDefaultAsync(m => m.Id == userId);
|
||||
User dbObj = await ct.User.FirstOrDefaultAsync(z => z.Id == userId);
|
||||
dbObj.Password = Hasher.hash(dbObj.Salt, newPassword);
|
||||
await ct.SaveChangesAsync();
|
||||
|
||||
@@ -305,7 +305,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.User.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.User.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.EmployeeNumber).AddText(obj.Tags).AddText(obj.Wiki).AddCustomFields(obj.CustomFields);
|
||||
@@ -394,14 +394,14 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.User.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.User.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
}
|
||||
|
||||
//LOGIN must be unique
|
||||
if (await ct.User.AnyAsync(m => m.Login == proposedObj.Login && m.Id != proposedObj.Id))
|
||||
if (await ct.User.AnyAsync(z => z.Login == proposedObj.Login && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Login");
|
||||
}
|
||||
@@ -447,7 +447,7 @@ namespace AyaNova.Biz
|
||||
else
|
||||
{
|
||||
//verify that client exists
|
||||
//TODO WHEN CLIENT OBJECT MADE if(!ct.Client.any(m))
|
||||
//TODO WHEN CLIENT OBJECT MADE if(!ct.Client.any(z))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,7 +461,7 @@ namespace AyaNova.Biz
|
||||
else
|
||||
{
|
||||
//verify that HeadOfficeId exists
|
||||
//TODO WHEN HEADOFFICE OBJECT MADE if(!ct.HeadOffice.any(m))
|
||||
//TODO WHEN HEADOFFICE OBJECT MADE if(!ct.HeadOffice.any(z))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +475,7 @@ namespace AyaNova.Biz
|
||||
else
|
||||
{
|
||||
//verify that VENDOR SubVendorId exists
|
||||
//TODO WHEN VENDOR OBJECT MADE if(!ct.Vendor.any(m))
|
||||
//TODO WHEN VENDOR OBJECT MADE if(!ct.Vendor.any(z))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ namespace AyaNova.Biz
|
||||
AddError(ApiErrorCode.VALIDATION_LENGTH_EXCEEDED, "EmployeeNumber", "255 max");
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.SingleOrDefaultAsync(x => x.FormKey == AyaType.User.ToString());
|
||||
var FormCustomization = await ct.FormCustom.SingleOrDefaultAsync(z => z.FormKey == AyaType.User.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -527,8 +527,8 @@ namespace AyaNova.Biz
|
||||
//They can always make any user inactive to get rid of them and it will mean referential integrity issues are not there
|
||||
|
||||
//There's only one rule - have they done anything eventlog worthy yet?
|
||||
//if (await ct.Event.Select(m => m).Where(m => m.UserId == inObj.Id).Count() > 0)
|
||||
if (await ct.Event.AnyAsync(m => m.UserId == inObj.Id))
|
||||
//if (await ct.Event.Select(z => z).Where(z => z.UserId == inObj.Id).Count() > 0)
|
||||
if (await ct.Event.AnyAsync(z => z.UserId == inObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.INVALID_OPERATION, "user", "LT:ErrorDBForeignKeyViolation");
|
||||
return;
|
||||
@@ -592,7 +592,7 @@ namespace AyaNova.Biz
|
||||
if (jobData.ContainsKey("idList"))
|
||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||
else
|
||||
idList = await ct.Widget.Select(m => m.Id).ToListAsync();
|
||||
idList = await ct.Widget.Select(z => z.Id).ToListAsync();
|
||||
bool SaveIt = false;
|
||||
foreach (long id in idList)
|
||||
{
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
//NOTE: get by UserId as there is a 1:1 relationship, not by useroptions id
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
return await ct.UserOptions.SingleOrDefaultAsync(m => m.UserId == fetchId);
|
||||
return await ct.UserOptions.SingleOrDefaultAsync(z => z.UserId == fetchId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Vendor.AnyAsync(e => e.Id == id);
|
||||
return await ct.Vendor.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -72,7 +72,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.Vendor.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.Vendor.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -90,7 +90,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Vendor> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.Vendor.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.Vendor.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -101,7 +101,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Vendor> PutAsync(Vendor putObject)
|
||||
{
|
||||
Vendor dbObject = await ct.Vendor.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
Vendor dbObject = await ct.Vendor.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -142,7 +142,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
Vendor dbObject = await ct.Vendor.SingleOrDefaultAsync(m => m.Id == id);
|
||||
Vendor dbObject = await ct.Vendor.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -182,7 +182,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.Vendor.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.Vendor.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -211,7 +211,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.Vendor.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.Vendor.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -219,7 +219,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Vendor.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.Vendor.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.Widget.AnyAsync(e => e.Id == id);
|
||||
return await ct.Widget.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -77,7 +77,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObject.Name, l++, 255);
|
||||
NotUnique = await ct.Widget.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.Widget.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
newObject.Name = newUniqueName;
|
||||
newObject.Id = 0;
|
||||
@@ -95,7 +95,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Widget> GetAsync(long id, bool logTheGetEvent = true)
|
||||
{
|
||||
var ret = await ct.Widget.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var ret = await ct.Widget.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -106,7 +106,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<Widget> PutAsync(Widget putObject)
|
||||
{
|
||||
Widget dbObject = await ct.Widget.SingleOrDefaultAsync(m => m.Id == putObject.Id);
|
||||
Widget dbObject = await ct.Widget.SingleOrDefaultAsync(z => z.Id == putObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -147,7 +147,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
Widget dbObject = await ct.Widget.SingleOrDefaultAsync(m => m.Id == id);
|
||||
Widget dbObject = await ct.Widget.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -205,7 +205,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.Widget.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.Widget.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Serial).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -235,7 +235,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.Widget.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.Widget.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -260,7 +260,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.Widget.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.Widget.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -331,7 +331,7 @@ namespace AyaNova.Biz
|
||||
if (jobData.ContainsKey("idList"))
|
||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||
else
|
||||
idList = await ct.Widget.Select(m => m.Id).ToListAsync();
|
||||
idList = await ct.Widget.Select(z => z.Id).ToListAsync();
|
||||
bool SaveIt = false;
|
||||
foreach (long id in idList)
|
||||
{
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> WorkOrderExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrder.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrder.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -128,7 +128,7 @@ namespace AyaNova.Biz
|
||||
.ThenInclude(wi => wi.Travels)
|
||||
.Include(w => w.Items)
|
||||
.ThenInclude(wi => wi.Units)
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
|
||||
|
||||
if (logTheGetEvent && ret != null)
|
||||
@@ -141,7 +141,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrder> WorkOrderPutAsync(dtWorkOrder dtPutObject)
|
||||
{
|
||||
WorkOrder dbObject = await ct.WorkOrder.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrder dbObject = await ct.WorkOrder.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -195,13 +195,13 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
WorkOrder dbObject = await ct.WorkOrder.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrder dbObject = await ct.WorkOrder.SingleOrDefaultAsync(z => z.Id == id);
|
||||
WorkOrderValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
|
||||
//collect the child id's to delete
|
||||
var ItemIds = await ct.WorkOrderItem.Where(m => m.WorkOrderId == id).Select(m => m.Id).ToListAsync();
|
||||
var ItemIds = await ct.WorkOrderItem.Where(z => z.WorkOrderId == id).Select(z => z.Id).ToListAsync();
|
||||
|
||||
//Delete children
|
||||
foreach (long ItemId in ItemIds)
|
||||
@@ -313,7 +313,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrder.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrder.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Serial).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -346,7 +346,7 @@ namespace AyaNova.Biz
|
||||
// if (!PropertyHasErrors("Name"))
|
||||
// {
|
||||
// //Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
// if (await ct.WorkOrder.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
// if (await ct.WorkOrder.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
// {
|
||||
// AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
// }
|
||||
@@ -354,7 +354,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrder.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrder.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -391,7 +391,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ItemExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItem.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItem.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -439,7 +439,7 @@ namespace AyaNova.Biz
|
||||
.Include(wi => wi.Tasks)
|
||||
.Include(wi => wi.Travels)
|
||||
.Include(wi => wi.Units)
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItem, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -452,7 +452,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<WorkOrderItem> ItemPutAsync(dtWorkOrderItem dtPutObject)
|
||||
{
|
||||
|
||||
WorkOrderItem dbObject = await ct.WorkOrderItem.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItem dbObject = await ct.WorkOrderItem.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -502,21 +502,21 @@ namespace AyaNova.Biz
|
||||
transaction = await ct.Database.BeginTransactionAsync();
|
||||
try
|
||||
{
|
||||
WorkOrderItem dbObject = await ct.WorkOrderItem.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItem dbObject = await ct.WorkOrderItem.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ItemValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
|
||||
//collect the child id's to delete
|
||||
var ExpenseIds = await ct.WorkOrderItemExpense.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var LaborIds = await ct.WorkOrderItemLabor.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var LoanIds = await ct.WorkOrderItemLoan.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var PartIds = await ct.WorkOrderItemPart.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var PartRequestIds = await ct.WorkOrderItemPartRequest.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var ScheduledUserIds = await ct.WorkOrderItemScheduledUser.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var TaskIds = await ct.WorkOrderItemTask.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var TravelIds = await ct.WorkOrderItemTravel.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var UnitIds = await ct.WorkOrderItemUnit.Where(m => m.WorkOrderItemId == id).Select(m => m.Id).ToListAsync();
|
||||
var ExpenseIds = await ct.WorkOrderItemExpense.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var LaborIds = await ct.WorkOrderItemLabor.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var LoanIds = await ct.WorkOrderItemLoan.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var PartIds = await ct.WorkOrderItemPart.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var PartRequestIds = await ct.WorkOrderItemPartRequest.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var ScheduledUserIds = await ct.WorkOrderItemScheduledUser.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var TaskIds = await ct.WorkOrderItemTask.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var TravelIds = await ct.WorkOrderItemTravel.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
var UnitIds = await ct.WorkOrderItemUnit.Where(z => z.WorkOrderItemId == id).Select(z => z.Id).ToListAsync();
|
||||
|
||||
//Delete children
|
||||
foreach (long ItemId in ExpenseIds)
|
||||
@@ -590,7 +590,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItem.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItem.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -635,7 +635,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> ItemGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItem.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItem.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -658,7 +658,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExpenseExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemExpense.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemExpense.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -694,7 +694,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemExpense
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemExpense, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -705,7 +705,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemExpense> ExpensePutAsync(WorkOrderItemExpense dtPutObject)
|
||||
{
|
||||
WorkOrderItemExpense dbObject = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemExpense dbObject = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -746,7 +746,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> ExpenseDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemExpense dbObject = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemExpense dbObject = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ExpenseValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -776,7 +776,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemExpense.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemExpense.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -824,7 +824,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> ExpenseGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemExpense.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -847,7 +847,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> LaborExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemLabor.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemLabor.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -883,7 +883,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemLabor
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemLabor, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -894,7 +894,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemLabor> LaborPutAsync(WorkOrderItemLabor dtPutObject)
|
||||
{
|
||||
WorkOrderItemLabor dbObject = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemLabor dbObject = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -935,7 +935,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> LaborDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemLabor dbObject = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemLabor dbObject = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(z => z.Id == id);
|
||||
LaborValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -965,7 +965,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemLabor.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemLabor.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1013,7 +1013,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> LaborGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemLabor.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1035,7 +1035,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> LoanExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemLoan.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemLoan.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1071,7 +1071,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemLoan
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemLoan, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -1082,7 +1082,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemLoan> LoanPutAsync(WorkOrderItemLoan dtPutObject)
|
||||
{
|
||||
WorkOrderItemLoan dbObject = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemLoan dbObject = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -1123,7 +1123,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> LoanDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemLoan dbObject = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemLoan dbObject = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(z => z.Id == id);
|
||||
LoanValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -1153,7 +1153,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemLoan.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemLoan.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1201,7 +1201,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> LoanGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemLoan.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1224,7 +1224,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> PartExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemPart.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemPart.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1260,7 +1260,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemPart
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemPart, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -1271,7 +1271,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemPart> PartPutAsync(WorkOrderItemPart dtPutObject)
|
||||
{
|
||||
WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -1312,7 +1312,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> PartDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemPart dbObject = await ct.WorkOrderItemPart.SingleOrDefaultAsync(z => z.Id == id);
|
||||
PartValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -1342,7 +1342,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemPart.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemPart.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1387,7 +1387,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> PartGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemPart.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemPart.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1410,7 +1410,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> PartRequestExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemPartRequest.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemPartRequest.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1446,7 +1446,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemPartRequest
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemPartRequest, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -1457,7 +1457,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemPartRequest> PartRequestPutAsync(WorkOrderItemPartRequest dtPutObject)
|
||||
{
|
||||
WorkOrderItemPartRequest dbObject = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemPartRequest dbObject = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -1498,7 +1498,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> PartRequestDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemPartRequest dbObject = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemPartRequest dbObject = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(z => z.Id == id);
|
||||
PartRequestValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -1528,7 +1528,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemPartRequest.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemPartRequest.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1576,7 +1576,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> PartRequestGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemPartRequest.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1599,7 +1599,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ScheduledUserExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemScheduledUser.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemScheduledUser.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1635,7 +1635,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemScheduledUser
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemScheduledUser, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -1646,7 +1646,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemScheduledUser> ScheduledUserPutAsync(WorkOrderItemScheduledUser dtPutObject)
|
||||
{
|
||||
WorkOrderItemScheduledUser dbObject = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemScheduledUser dbObject = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -1687,7 +1687,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> ScheduledUserDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemScheduledUser dbObject = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemScheduledUser dbObject = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(z => z.Id == id);
|
||||
ScheduledUserValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -1717,7 +1717,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemScheduledUser.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemScheduledUser.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1765,7 +1765,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> ScheduledUserGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemScheduledUser.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1788,7 +1788,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> TaskExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemTask.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemTask.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1824,7 +1824,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemTask
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemTask, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -1835,7 +1835,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemTask> TaskPutAsync(WorkOrderItemTask dtPutObject)
|
||||
{
|
||||
WorkOrderItemTask dbObject = await ct.WorkOrderItemTask.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemTask dbObject = await ct.WorkOrderItemTask.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -1876,7 +1876,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> TaskDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemTask dbObject = await ct.WorkOrderItemTask.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemTask dbObject = await ct.WorkOrderItemTask.SingleOrDefaultAsync(z => z.Id == id);
|
||||
TaskValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -1906,7 +1906,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemTask.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemTask.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -1954,7 +1954,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> TaskGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemTask.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemTask.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -1977,7 +1977,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> TravelExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemTravel.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemTravel.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -2013,7 +2013,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemTravel
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemTravel, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -2024,7 +2024,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemTravel> TravelPutAsync(WorkOrderItemTravel dtPutObject)
|
||||
{
|
||||
WorkOrderItemTravel dbObject = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemTravel dbObject = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -2065,7 +2065,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> TravelDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemTravel dbObject = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemTravel dbObject = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(z => z.Id == id);
|
||||
TravelValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -2095,7 +2095,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemTravel.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemTravel.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -2143,7 +2143,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> TravelGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemTravel.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -2166,7 +2166,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> UnitExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderItemUnit.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderItemUnit.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -2202,7 +2202,7 @@ namespace AyaNova.Biz
|
||||
//docs say this will not query twice but will recognize the duplicate woitem bit which is required for multiple grandchild collections
|
||||
var ret =
|
||||
await ct.WorkOrderItemUnit
|
||||
.SingleOrDefaultAsync(m => m.Id == id);
|
||||
.SingleOrDefaultAsync(z => z.Id == id);
|
||||
if (logTheGetEvent && ret != null)
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, AyaType.WorkOrderItemUnit, AyaEvent.Retrieved), ct);
|
||||
return ret;
|
||||
@@ -2213,7 +2213,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<WorkOrderItemUnit> UnitPutAsync(WorkOrderItemUnit dtPutObject)
|
||||
{
|
||||
WorkOrderItemUnit dbObject = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(m => m.Id == dtPutObject.Id);
|
||||
WorkOrderItemUnit dbObject = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(z => z.Id == dtPutObject.Id);
|
||||
if (dbObject == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||
@@ -2254,7 +2254,7 @@ namespace AyaNova.Biz
|
||||
//
|
||||
internal async Task<bool> UnitDeleteAsync(long id)
|
||||
{
|
||||
WorkOrderItemUnit dbObject = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
WorkOrderItemUnit dbObject = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
UnitValidateCanDelete(dbObject);
|
||||
if (HasErrors)
|
||||
return false;
|
||||
@@ -2284,7 +2284,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderItemUnit.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemUnit.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
@@ -2332,7 +2332,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> UnitGetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderItemUnit.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -2448,7 +2448,7 @@ namespace AyaNova.Biz
|
||||
if (jobData.ContainsKey("idList"))
|
||||
idList = ((JArray)jobData["idList"]).ToObject<List<long>>();
|
||||
else
|
||||
idList = await ct.Widget.Select(m => m.Id).ToListAsync();
|
||||
idList = await ct.Widget.Select(z => z.Id).ToListAsync();
|
||||
bool SaveIt = false;
|
||||
foreach (long id in idList)
|
||||
{
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace AyaNova.Biz
|
||||
//EXISTS
|
||||
internal async Task<bool> ExistsAsync(long id)
|
||||
{
|
||||
return await ct.WorkOrderTemplate.AnyAsync(e => e.Id == id);
|
||||
return await ct.WorkOrderTemplate.AnyAsync(z => z.Id == id);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -46,7 +46,7 @@ namespace AyaNova.Biz
|
||||
internal async Task<WorkOrderTemplate> GetAsync(long fetchId, bool logTheGetEvent = true)
|
||||
{
|
||||
//This is simple so nothing more here, but often will be copying to a different output object or some other ops
|
||||
var ret = await ct.WorkOrderTemplate.SingleOrDefaultAsync(m => m.Id == fetchId);
|
||||
var ret = await ct.WorkOrderTemplate.SingleOrDefaultAsync(z => z.Id == fetchId);
|
||||
if (logTheGetEvent && ret != null)
|
||||
{
|
||||
//Log
|
||||
@@ -104,7 +104,7 @@ namespace AyaNova.Biz
|
||||
do
|
||||
{
|
||||
newUniqueName = Util.StringUtil.UniqueNameBuilder(dbObj.Name, l++, 255);
|
||||
NotUnique = await ct.WorkOrderTemplate.AnyAsync(m => m.Name == newUniqueName);
|
||||
NotUnique = await ct.WorkOrderTemplate.AnyAsync(z => z.Name == newUniqueName);
|
||||
} while (NotUnique);
|
||||
|
||||
outObj.Name = newUniqueName;
|
||||
@@ -174,7 +174,7 @@ namespace AyaNova.Biz
|
||||
|
||||
public async Task<Search.SearchIndexProcessObjectParameters> GetSearchResultSummary(long id)
|
||||
{
|
||||
var obj = await ct.WorkOrderTemplate.SingleOrDefaultAsync(m => m.Id == id);
|
||||
var obj = await ct.WorkOrderTemplate.SingleOrDefaultAsync(z => z.Id == id);
|
||||
var SearchParams = new Search.SearchIndexProcessObjectParameters();
|
||||
if (obj != null)
|
||||
SearchParams.AddText(obj.Notes).AddText(obj.Name).AddText(obj.Wiki).AddText(obj.Tags).AddCustomFields(obj.CustomFields);
|
||||
@@ -227,7 +227,7 @@ namespace AyaNova.Biz
|
||||
if (!PropertyHasErrors("Name"))
|
||||
{
|
||||
//Use Any command is efficient way to check existance, it doesn't return the record, just a true or false
|
||||
if (await ct.WorkOrderTemplate.AnyAsync(m => m.Name == proposedObj.Name && m.Id != proposedObj.Id))
|
||||
if (await ct.WorkOrderTemplate.AnyAsync(z => z.Name == proposedObj.Name && z.Id != proposedObj.Id))
|
||||
{
|
||||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Name");
|
||||
}
|
||||
@@ -235,7 +235,7 @@ namespace AyaNova.Biz
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.WorkOrderTemplate.ToString());
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderTemplate.ToString());
|
||||
if (FormCustomization != null)
|
||||
{
|
||||
//Yeppers, do the validation, there are two, the custom fields and the regular fields that might be set to required
|
||||
|
||||
@@ -62,8 +62,8 @@ namespace AyaNova.Biz
|
||||
//Get the deleteable succeeded jobs list
|
||||
var jobs = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.Created < dtDeleteCutoff && c.JobStatus == jobStatus)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.Created < dtDeleteCutoff && z.JobStatus == jobStatus)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
log.LogTrace($"SweepAsync processing: cutoff={dtDeleteCutoff.ToString()}, for {jobs.Count.ToString()} jobs of status {jobStatus.ToString()}");
|
||||
@@ -95,8 +95,8 @@ namespace AyaNova.Biz
|
||||
//Get the deleteable succeeded jobs list
|
||||
var jobs = await ct.OpsJob
|
||||
.AsNoTracking()
|
||||
.Where(c => c.Created < dtRunningDeadline && c.JobStatus == JobStatus.Running)
|
||||
.OrderBy(m => m.Created)
|
||||
.Where(z => z.Created < dtRunningDeadline && z.JobStatus == JobStatus.Running)
|
||||
.OrderBy(z => z.Created)
|
||||
.ToListAsync();
|
||||
|
||||
log.LogTrace($"killStuckJobsAsync processing: cutoff={dtRunningDeadline.ToString()}, for {jobs.Count.ToString()} jobs of status {JobStatus.Running.ToString()}");
|
||||
|
||||
@@ -130,25 +130,25 @@ namespace AyaNova.Models
|
||||
//TODO: this entire block is almost certainly wrong or not required
|
||||
|
||||
// //Indexes must be specified through fluent api unfortunately
|
||||
// modelBuilder.Entity<FileAttachment>().HasIndex(p => p.StoredFileName);
|
||||
// modelBuilder.Entity<FileAttachment>().HasIndex(z => z.StoredFileName);
|
||||
|
||||
// //Relationships
|
||||
// modelBuilder.Entity<Translation>()
|
||||
// .HasMany(c => c.TranslationItems)
|
||||
// .WithOne(e => e.Translation)
|
||||
// .HasMany(z => z.TranslationItems)
|
||||
// .WithOne(z => z.Translation)
|
||||
// .IsRequired();//default delete behaviour is cascade when set to isrequired
|
||||
|
||||
// modelBuilder.Entity<User>()
|
||||
// .HasOne(p => p.UserOptions)
|
||||
// .WithOne(i => i.User)
|
||||
// .HasForeignKey<UserOptions>(b => b.UserId)
|
||||
// .HasOne(z => z.UserOptions)
|
||||
// .WithOne(z => z.User)
|
||||
// .HasForeignKey<UserOptions>(z => z.UserId)
|
||||
// .OnDelete(DeleteBehavior.Cascade);//Hopefully will delete the useroptions with the user?
|
||||
|
||||
// //User->Widget Not certain about this definition
|
||||
// modelBuilder.Entity<User>()
|
||||
// .HasOne(p => p.Widget)
|
||||
// .WithOne(i => i.User)
|
||||
// .HasForeignKey<Widget>(b => b.UserId)
|
||||
// .HasOne(z => z.Widget)
|
||||
// .WithOne(z => z.User)
|
||||
// .HasForeignKey<Widget>(z => z.UserId)
|
||||
// .OnDelete(DeleteBehavior.NoAction);
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -354,7 +354,7 @@ namespace AyaNova.Util
|
||||
{
|
||||
|
||||
//check ref count of file
|
||||
var count = await ct.FileAttachment.LongCountAsync(w => w.StoredFileName == fileAttachmentToBeDeleted.StoredFileName);
|
||||
var count = await ct.FileAttachment.LongCountAsync(z => z.StoredFileName == fileAttachmentToBeDeleted.StoredFileName);
|
||||
|
||||
//Store in DB
|
||||
ct.FileAttachment.Remove(fileAttachmentToBeDeleted);
|
||||
|
||||
@@ -565,7 +565,7 @@ namespace AyaNova.Core
|
||||
{
|
||||
try
|
||||
{
|
||||
var CurrentInDbKeyRecord = await ct.License.OrderBy(x => x.Id).FirstOrDefaultAsync();
|
||||
var CurrentInDbKeyRecord = await ct.License.OrderBy(z => z.Id).FirstOrDefaultAsync();
|
||||
if (CurrentInDbKeyRecord == null)
|
||||
throw new ApplicationException("E1020 - Can't install key, no key record found");
|
||||
|
||||
@@ -681,13 +681,13 @@ EQIDAQAB
|
||||
|
||||
//FEATURES
|
||||
Newtonsoft.Json.Linq.JArray p = (Newtonsoft.Json.Linq.JArray)token.SelectToken("Key.Features");
|
||||
for (int x = 0; x < p.Count; x++)
|
||||
for (int z = 0; z < p.Count; z++)
|
||||
{
|
||||
LicenseFeature lf = new LicenseFeature();
|
||||
lf.Feature = (string)p[x].SelectToken("Name");
|
||||
if (p[x].SelectToken("Count") != null)
|
||||
lf.Feature = (string)p[z].SelectToken("Name");
|
||||
if (p[z].SelectToken("Count") != null)
|
||||
{
|
||||
lf.Count = (long)p[x].SelectToken("Count");
|
||||
lf.Count = (long)p[z].SelectToken("Count");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -85,15 +85,7 @@ namespace AyaNova.Util
|
||||
//Erase all the data except for the license, schema and the manager user
|
||||
await DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(log);
|
||||
apiServerState.SetOpsOnly("Seeding database with sample data");
|
||||
|
||||
// //Set the default user options of the manager account
|
||||
// using (var cct = ServiceProviderProvider.DBContext)
|
||||
// {
|
||||
// var mgr = await cct.UserOptions.FirstAsync(m => m.Id == 1);
|
||||
// mgr.TimeZoneOffset = timeZoneOffset;
|
||||
// await cct.SaveChangesAsync();
|
||||
// }
|
||||
|
||||
|
||||
|
||||
//WIDGET sample form customization
|
||||
{
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace AyaNova.Util
|
||||
if (global == null)
|
||||
{
|
||||
//fetch or create as not provided (meaning this was called from Startup.cs)
|
||||
global = ct.GlobalBizSettings.FirstOrDefault(m => m.Id == 1);
|
||||
global = ct.GlobalBizSettings.FirstOrDefault(z => z.Id == 1);
|
||||
if (global == null)
|
||||
{
|
||||
global = new GlobalBizSettings();
|
||||
|
||||
Reference in New Issue
Block a user