DestructionActActions.cs 3.46 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.DestructionAct;

namespace DirRX.Storage.Client
{
  partial class DestructionActActions
  {
    public virtual void CreateVersionFromReport(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Если документ свежесозданный, сохранить его, чтобы были заполнены обязательные поля.
      if (_obj.State.IsInserted)
        _obj.Save();

      // Переформировать версию может только архивист.
      if (Users.Current != null && Users.Current.IsSystem != true && _obj.Archivist != null &&
          _obj.Archivist != Storage.PublicFunctions.Module.Remote.GetEmployeeForCurentUser())
      {
        DestructionActs.Resources.WarningOnlyArchivistCanReformVersionFormat(_obj.Archivist.DisplayValue);
        return;
      }
      
      PublicFunctions.DestructionAct.GenerateLastVersionFromReport(_obj);
      
      Dialogs.NotifyMessage(DestructionActs.Resources.NotifyVersionReformatted);
    }

    public virtual bool CanCreateVersionFromReport(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      // Нельзя переформировывать акт, если последняя версия утверждена.
      var lastVersion = _obj.LastVersion;
      return !Signatures.Get(lastVersion).Any(s => s.SignatureType == SignatureType.Approval);
    }

    public virtual void RemoveCaseFiles(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Отобразить диалог для исключения дел из акта.
      var error = Functions.DestructionAct.RemoveCaseFilesDialog(_obj, null);
      
      if (error != string.Empty)
      {
        if (error != DestructionActs.Resources.Cancel)
          e.AddWarning(error);
      }
      else
      {
        Functions.DestructionAct.UpdatePeriod(_obj);
        _obj.Save();
        _obj.State.Controls.Control.Refresh();
        Dialogs.NotifyMessage("Дела исключены из акта.");
      }
    }

    public virtual bool CanRemoveCaseFiles(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return !_obj.State.IsInserted;
    }

    public virtual void AddCaseFiles(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Проверить, что заполнены все обязательные свойства.
      // Пока просто через сохранение.
      if (_obj.State.IsChanged)
        _obj.Save();
      
      // Отобразить диалог для включения дел в акт.
      var error = Functions.DestructionAct.AddCaseFilesDialog(_obj);
      
      if (error != string.Empty)
      {
        if (error != DestructionActs.Resources.Cancel)
          e.AddWarning(error);
      }
      else
      {
        Functions.DestructionAct.UpdatePeriod(_obj);
        _obj.Save();
        _obj.State.Controls.Control.Refresh();
        Dialogs.NotifyMessage("Дела включены в акт.");
      }
    }

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

    public virtual void ShowCaseFiles(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      PublicFunctions.DestructionAct.Remote.GetCaseFiles(_obj).Show();
    }

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

  }

}