This commit is contained in:
2020-12-30 17:52:08 +00:00
parent 7cf086425c
commit 21f5b7bcb0
3 changed files with 84 additions and 16 deletions

View File

@@ -44,7 +44,7 @@ namespace AyaNova.Api.Controllers
/// <param name="apiVersion">From route path</param> /// <param name="apiVersion">From route path</param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<IActionResult> PostServiceBank([FromBody] ServiceBank newObject, ApiVersion apiVersion) public async Task<IActionResult> PostServiceBank([FromBody] dtServiceBank newObject, ApiVersion apiVersion)
{ {
if (!serverState.IsOpen) if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));

View File

@@ -41,19 +41,46 @@ namespace AyaNova.Biz
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//CREATE //CREATE
// //
internal async Task<ServiceBank> CreateAsync(ServiceBank newObject) internal async Task<ServiceBank> CreateAsync(dtServiceBank newDtObject)
{ {
await ValidateAsync(newObject); using (var transaction = await ct.Database.BeginTransactionAsync())
if (HasErrors)
return null;
else
{ {
await ct.ServiceBank.AddAsync(newObject); //get the last record
await ct.SaveChangesAsync(); var LastEntry = await ct.ServiceBank.OrderByDescending(m => m.EntryDate).SingleOrDefaultAsync(m => m.ObjectId == newDtObject.ObjectId && m.ObjectType == newDtObject.ObjectType);
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct); ServiceBank newObject = new ServiceBank();
await SearchIndexAsync(newObject, true); newObject.Name = newDtObject.Name;
await HandlePotentialNotificationEvent(AyaEvent.Created, newObject); newObject.EntryDate = DateTime.UtcNow;
return newObject; newObject.ObjectId = newDtObject.ObjectId;
newObject.ObjectType = newDtObject.ObjectType;
newObject.SourceId = newDtObject.SourceId;
newObject.SourceType = newDtObject.SourceType;
newObject.Incidents = newDtObject.Incidents;
newObject.Currency = newDtObject.Currency;
newObject.Hours = newDtObject.Hours;
if (LastEntry != null)
{
newObject.LastEntryDate = LastEntry.EntryDate;
newObject.LastCurrencyBalance = LastEntry.CurrencyBalance;
newObject.LastHoursBalance = LastEntry.HoursBalance;
newObject.LastIncidentsBalance = LastEntry.IncidentsBalance;
newObject.HoursBalance = LastEntry.HoursBalance + newObject.Hours;
newObject.IncidentsBalance = LastEntry.IncidentsBalance + newObject.Incidents;
newObject.CurrencyBalance = LastEntry.CurrencyBalance + newObject.Currency;
}
await ValidateAsync(newObject);
if (HasErrors)
return null;
else
{
await ct.ServiceBank.AddAsync(newObject);
await ct.SaveChangesAsync();
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, newObject.Id, BizType, AyaEvent.Created), ct);
await SearchIndexAsync(newObject, true);
await HandlePotentialNotificationEvent(AyaEvent.Created, newObject);
return newObject;
}
} }
} }
@@ -70,7 +97,16 @@ namespace AyaNova.Biz
return ret; return ret;
} }
////////////////////////////////////////////////////////////////////////////////////////////////
//GET LAST
//
internal async Task<ServiceBank> GetLastForObjectAsync(AyaType objectType, long objectId)
{
var ret = await ct.ServiceBank.OrderByDescending(m => m.EntryDate).SingleOrDefaultAsync(m => m.ObjectId == objectId && m.ObjectType == objectType);
return ret;
}
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//SEARCH //SEARCH

View File

@@ -57,6 +57,38 @@ namespace AyaNova.Models
}//eoc }//eoc
//Data transfer version used by UI to make new entry or consume banked time
//this way the client doesn't need to bother with balances or last entries and such
public class dtServiceBank
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public string Name { get; set; }
[Required]
public long ObjectId { get; set; }
[Required]
public AyaType ObjectType { get; set; }
[Required]
public long SourceId { get; set; }
[Required]
public AyaType SourceType { get; set; }
[Required]
public decimal Incidents { get; set; }
[Required]
public decimal Currency { get; set; }
[Required]
public decimal Hours { get; set; }
}//eoc
}//eons }//eons
/* /*
CREATE TABLE [dbo].[ASERVICEBANK]( CREATE TABLE [dbo].[ASERVICEBANK](