ArchiveEventLogActions.cs 3.13 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.ArchiveEventLog;

namespace DirRX.Storage.Client
{
  partial class ArchiveEventLogCollectionActions
  {

    public virtual bool CanResetErrorStatus(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return _objs.Any(x => x.CurrentState == CurrentState.Error);
    }

    public virtual void ResetErrorStatus(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      foreach (var item in _objs)
        Functions.ArchiveEventLog.Remote.ResetErrorStatus(item);
    }
  }

  partial class ArchiveEventLogActions
  {
    public virtual void ExportContainer(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      var error = string.Empty;
      try
      {
        var zip = PublicFunctions.ArchiveEventLog.Remote.ExportContainer(_obj);
        if (zip != null)
          zip.Export();
        else
          error = Storage.ArchiveDocumentBases.Resources.ErrorDataNotFound;
      }
      catch (Exception ex)
      {
        var exception = ex.InnerException != null ? ex.InnerException : ex;
        error = exception.Message;
        Logger.Debug(exception.ToString());
      }
      
      if (error != string.Empty)
        e.AddError(Storage.ArchiveDocumentBases.Resources.ErrorMessageTemplateFormat(error));
      else
        PublicFunctions.ArchiveEventLog.AddEventHistory(_obj, "Экспорт контейнера", _obj.CurrentState.Value, "Выгрузка из Журнала поступления и выбытия");
    }

    public virtual bool CanExportContainer(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return _obj.DocumentId.HasValue && _obj.DocumentId.Value > 0 && _obj.DestructionAct == null;
    }

    public virtual void VerifyContainer(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      if (_obj.CurrentState == Storage.ArchiveEventLog.CurrentState.Destroyed)
      {
        Dialogs.NotifyMessage(DirRX.Storage.ArchiveEventLogs.Resources.MessageDocumentAlreadyDestroyed);
        return;
      }
      _obj.VerificationResponsible = PublicFunctions.Module.Remote.GetEmployeeForCurentUser();
      _obj.VerificationReason = ArchiveEventLogs.Resources.UnscheduledVerificationReason;
      _obj.JobStartDate = Calendar.Now;
      _obj.JobEndDate = null;
      _obj.VerificationResult = null;

      var note = Storage.ArchiveEventLogs.Resources.VerificationInitiatedByUserFormat(
        Users.Current != null && Users.Current.IsSystem != true ? Users.Current.DisplayValue : Storage.ArchiveEventLogs.Resources.VerificationSystemUser,
        _obj.VerificationReason);

      Storage.PublicFunctions.ArchiveEventLog.AddEventHistory(_obj, Storage.ArchiveEventLogs.Resources.Operation_Verification,
                                                              DirRX.Storage.ArchiveEventLog.CurrentState.InQueue, note);
      
      PublicFunctions.ArchiveEventLog.Remote.VerifyContainer(_obj);
      
      Dialogs.NotifyMessage(ArchiveEventLogs.Resources.MessageVerificationCompleted);
    }

    public virtual bool CanVerifyContainer(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return true;
    }

  }

}