CaseFileClientFunctions.cs 1.88 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.LongTermArchive.CaseFile;
using Sungero.Domain.Shared;
using Sungero.Metadata;
using CommonLibrary;

namespace DirRX.LongTermArchive.Client
{
  partial class CaseFileFunctions
  {
    // Изменить доступность для редактирования свойств карточки в зависимости от статуса дела в ДА.
    public void SetStateProperties()
    {
      if (!_obj.LTAStageDirRX.HasValue)
        _obj.LTAStageDirRX = LTAStageDirRX.InWork;

      // Установить доступность отображаемых свойств в зависимости от статуса "Формирование".
      var inWork = _obj.LTAStageDirRX.Value == LTAStageDirRX.InWork;
      var props = _obj.State.Properties;
      foreach (var prop in props.Where(p => p.IsVisible))
      {
        // Получить параметр "Разрешить редактирование" из метаданных свойства.
        var propMetadata = (PropertyMetadata)prop.GetType().GetProperty("PropertyMetadata").GetValue(prop);
        if (propMetadata.IsEnabled)
          prop.IsEnabled = inWork;
      }
      // Установить доступность свойства "Плановая дата уничтожения" в зависимости от статуса "Завершено".
      props.LTADestructionDateDirRX.IsEnabled = _obj.LTAStageDirRX.Value == LTAStageDirRX.CompletedDirRX ||
        _obj.LTAStageDirRX.Value == LTAStageDirRX.ArchivedDirRX;
      
      // Разрешить редактирование свойства "Местонахождение" вне зависимости от статуса.
      if (!props.LTALocationDirRX.IsEnabled)
        props.LTALocationDirRX.IsEnabled = true;

    }
  }
}