ConsolidatedInventoryActions.cs 4.55 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.ConsolidatedInventory;

namespace DirRX.Storage.Client
{
  partial class ConsolidatedInventoryActions
  {
    public virtual void ReopenInventory(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      _obj.Status = Status.Active;
      _obj.Save();
    }

    public virtual bool CanReopenInventory(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return _obj.Status == Status.Closed;
    }

    public virtual void CloseInventory(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      _obj.Status = Status.Closed;
      _obj.Save();
    }

    public virtual bool CanCloseInventory(Sungero.Domain.Client.CanExecuteActionArgs e)
    {
      return _obj.Status == Status.Active;
    }

    public virtual void CreateAnnualSection(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      // Проверить наличие переданных в архив дел для формирования годового раздела.
      var caseFiles = PublicFunctions.ConsolidatedInventory.Remote.GetCaseFiles(_obj);
      
      if (!caseFiles.Any())
      {
        Dialogs.ShowMessage(DirRX.Storage.ConsolidatedInventories.Resources.CreateAnnualSectionDialogCaseFileNotFoundWarning, MessageType.Warning);
        return;
      }
      
      // Запросить критерии формирования годового раздела.
      var dialog = Dialogs.CreateInputDialog(DirRX.Storage.ConsolidatedInventories.Resources.CreateAnnualSectionDialogTitle);
      var yearSelector = dialog.AddInteger(DirRX.Storage.ConsolidatedInventories.Resources.CreateAnnualSectionDialogYearLabel, true, (int?)Calendar.Now.Year);
      
      dialog.SetOnButtonClick((d) =>
                              {
                                if (d.Button == DialogButtons.Ok)
                                {
                                  if (yearSelector.Value < 1990)
                                    e.AddError("Неверно указан год.");
                                }
                              });
      
      if (dialog.Show() == DialogButtons.Ok)
      {
        var year = yearSelector.Value.Value;
        var annualSection = Functions.Module.Remote.GetAnnualSection(_obj, year);
        if (annualSection != null)
        {
          if (Signatures.Get(annualSection).Where(x => x.SignatureType == SignatureType.Approval).Any())
          {
            Dialogs.ShowMessage(DirRX.Storage.ConsolidatedInventories.Resources.CreateAnnualSectionDialogAlreadyExists, MessageType.Warning);
            return;
          }
          else
          {
            var dialogConfirm = Dialogs.CreateConfirmDialog(DirRX.Storage.ConsolidatedInventories.Resources.AnnualSectionCreatingConfirmFormat(year.ToString(), _obj.Name));
            if (dialogConfirm.Show() != true)
              return;
          }
        }
        
        // Проверить дела за указанный год.
        var caseFilesYear = caseFiles.Where(x => x.LTAConsInventoryYearDirRX == year);
        if (!caseFilesYear.Any())
        {
          Dialogs.ShowMessage(DirRX.Storage.ConsolidatedInventories.Resources.CreateAnnualSectionDialogYearCaseFileNotFoundWarning, MessageType.Warning);
          return;
        }
        
        // Создать и отобразить годовой раздел.
        annualSection = Storage.PublicFunctions.Module.Remote.CreateAnnualSection(_obj, year, caseFilesYear.Count());
        
        // Сформировать тело документа из отчета.
        Storage.PublicFunctions.AnnualSection.GenerateLastVersionFromReport(annualSection);
        
        if (annualSection != null)
          annualSection.Open();
      }
    }

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

    public virtual void ShowAnnualSections(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      PublicFunctions.ConsolidatedInventory.Remote.GetAnnualSections(_obj).Show();
    }

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

    public virtual void ShowCaseFiles(Sungero.Domain.Client.ExecuteActionArgs e)
    {
      PublicFunctions.ConsolidatedInventory.Remote.GetCaseFiles(_obj).ShowModal();
      Functions.ConsolidatedInventory.UpdateConsolidatedInventory(_obj);
    }

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

  }

}