DestructionActHandlers.cs 1.38 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.DestructionAct;

namespace DirRX.Storage
{
  partial class DestructionActServerHandlers
  {

    public override void Saving(Sungero.Domain.SavingEventArgs e)
    {
      base.Saving(e);
      
      if (_obj.InternalApprovalState == InternalApprovalState.Signed)
      {
        e.Params.Add(Constants.Module.DocflowParams.NeedDestroyKey, true);
      }
    }

    public override void AfterSave(Sungero.Domain.AfterSaveEventArgs e)
    {
      base.AfterSave(e);
      
      if (e.Params.Contains(Constants.Module.DocflowParams.NeedDestroyKey))
      {
        e.Params.Remove(Constants.Module.DocflowParams.NeedDestroyKey);
        var job = AsyncHandlers.SetDocsToDestroy.Create();
        job.actInventoryId = _obj.Id;
        job.ExecuteAsync();
      }
    }

    public override void Created(Sungero.Domain.CreatedEventArgs e)
    {
      base.Created(e);
      
      _obj.State.Properties.Subject.IsRequired = false;
    }

    public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
    {
      base.BeforeSave(e);

      if (!_obj.DocumentNumber.HasValue)
        _obj.DocumentNumber = Functions.DestructionAct.GetNextDocumentNumber(_obj);
      
      Functions.DestructionAct.UpdatePeriod(_obj);
      
      _obj.Subject = _obj.Name;
    }
  }

}