12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using Comal.Classes;
- using InABox.Core;
- using InABox.Database;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PRS.Shared.Database_Update_Scripts;
- internal class Update_8_49 : DatabaseUpdateScript
- {
- public override VersionNumber Version => new(8, 49);
-
- public override bool Update()
- {
- MigrateBillApprovals();
- return true;
- }
- private void MigrateBillApprovals()
- {
- var _provider = DbFactory.NewProvider(Logger.Main);
- Logger.Send(LogType.Information, "", $"Migrating Bill Approvals...");
- var _approvals = _provider.Query(
- new Filter<BillApproval>().All(),
- Columns.Local<BillApproval>().Add("Approved")
- ).ToArray<BillApproval>()
- .ToArray();
- Utils.Utils.ProcessInChunks(
- _approvals,
- chunk =>
- {
- foreach(var _approval in chunk)
- {
- var _date = (DateTime)(CoreUtils.GetPropertyValue(_approval,"Approved") ?? DateTime.MinValue);
- _approval.Status = _date.IsEmpty() ? BillApprovalStatus.NotYetApproved : BillApprovalStatus.Approved;
- }
- _provider.Save(chunk.Where(x => x.IsChanged()));
- },
- 100,
- percent => Logger.Send(LogType.Information, "", $"Migrating Bill Approvals: {percent:F2}%")
-
- );
-
- Logger.Send(LogType.Information, "", $"Updating Bill Statuses...");
- var _bills = _provider.Query<Bill>(
- new Filter<Bill>().All(),
- Columns.Required<Bill>().Add(x=>x.ApprovalStatus)
- ).ToArray<Bill>();
-
- Utils.Utils.ProcessInChunks(
- _bills,
- chunk =>
- {
- foreach (var _bill in chunk)
- {
- var _statuses = _approvals
- .Where(x => x.Bill.ID == _bill.ID)
- .Select(x => x.Status)
- .Distinct()
- .ToArray();
- _bill.ApprovalStatus = Bill.CalculateApprovalStatus(_statuses);
- }
- _provider.Save(chunk.Where(x => x.IsChanged()));
- },
- 100,
- percent => Logger.Send(LogType.Information, "", $"Migrating Bill Statuses: {percent:F2}%")
- );
- Logger.Send(LogType.Information, "", $"Migrating Bill Statuses complete");
-
- }
- }
|