ArchiveDocumentBaseActions.cs 1.51 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.ArchiveDocumentBase;

namespace DirRX.Storage.Client
{
  partial class ArchiveDocumentBaseActions
  {

    public virtual void ExportContainer(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      var error = string.Empty;
      try
      {
        var eventLog = PublicFunctions.Module.Remote.GetArchiveEventLogEntry(_obj.Id);
        if (eventLog != null)
        {          
          var zip = PublicFunctions.ArchiveEventLog.Remote.ExportContainer(eventLog);
          if (zip != null)
            zip.Export();
          else
            error = Storage.ArchiveDocumentBases.Resources.ErrorDataNotFound;
        }
        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
      {
        var operation = new Enumeration(Constants.ArchiveDocumentBase.Operation.ExportContainer);
        _obj.History.Write(operation, operation, string.Empty, _obj.LastVersion.Number);
      }

    }

    public virtual bool CanExportContainer(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return _obj.HasVersions;
    }

  }

}