CaseInventoryActions.cs 3.6 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.CaseArchiving.CaseInventory;

namespace DirRX.CaseArchiving.Client
{
  partial class CaseInventoryActions
  {
    public override void SendForApproval(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      base.SendForApproval(e);
    }

    public override bool CanSendForApproval(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return base.CanSendForApproval(e);
    }

    public virtual void CreateVersionFromReport(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Если документ свежесозданный, сохранить его, чтобы были проверены обязательные поля.
      if (_obj.State.IsInserted)
        _obj.Save();
      
      // Переформировать версию может только делопроизводитель, указанный в описи.
      if (Users.Current != null && Users.Current.IsSystem != true && _obj.Responsible != null &&
          _obj.Responsible != Storage.PublicFunctions.Module.Remote.GetEmployeeForCurentUser())
      {
        CaseInventories.Resources.WarningOnlyResponsibleCanReformVersionFormat(_obj.Responsible.DisplayValue);
        return;
      }      
      
      var oldVersion = _obj.LastVersion;
      var newVerison = CaseArchiving.PublicFunctions.CaseInventory.GenerateLastVersionFromReport(_obj);
      
      if (newVerison != null)
        Dialogs.NotifyMessage(oldVersion == newVerison ? CaseInventories.Resources.NotifyVersionReformatted : CaseInventories.Resources.NotifyVersionCreated);
      else
        e.AddError(CaseInventories.Resources.ErrorFailedReformatVersion);
    }

    public virtual bool CanCreateVersionFromReport(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      // Нельзя переформировывать опись, если указана дата передачи на архивное хранение.
      return !_obj.ArchiveDate.HasValue;
    }

    public virtual void RemoveCaseFiles(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Отобразить диалог для исключения дел из описи.
      var error = Functions.CaseInventory.RemoveCaseFilesDialog(_obj, null);
      
      if (error != string.Empty)
        e.AddWarning(error);
      else
        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.CaseInventory.AddCaseFilesDialog(_obj);
      
      if (error != string.Empty)
        e.AddWarning(error);
      else
        Dialogs.NotifyMessage("Дела включены в опись.");
    }

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

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

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

  }
}