DciProcessKindServerFunctions.cs 1.88 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;

namespace DirRX.DciCore.Server
{
  partial class DciProcessKindFunctions
  {

    /// <summary>
    /// Получить запись справочника по имени процесса.
    /// </summary>
    /// <param name="processName">Имя процесса DCI.</param>
    /// <returns>Запись справочника "Вид межсистемного процесса".</returns>
    [Public, Remote(IsPure = true)]
    public static IDciProcessKind GetProcessKindByName(string processName)
    {
      var result = DciProcessKinds.GetAll().Where(x => x.Status == Status.Active
                                                  && x.Name == processName)
        .FirstOrDefault();
      return result;
    }
    
    /// <summary>
    /// Проверить существование записи справочника по имени процесса и имени сообщения.
    /// </summary>
    /// <param name="processName">Имя процесса DCI.</param>
    /// <param name="messageName">Имя сообщения DCI.</param>
    /// <returns>Пустая строка или текст ошибки.</returns>
    [Public, Remote(IsPure = true)]
    public static string CheckProcessKindExists(string processName, string messageName)
    {
      var process = GetProcessKindByName(processName);
      if (process == null)
        return DirRX.DciCore.DciProcessKinds.Resources.NotFoundProcessKindByProcessNameFormat(processName);
      
      var messageRow = process.Messages.Where(x => x.Name == messageName).FirstOrDefault();
      if (messageRow == null)
        return DirRX.DciCore.DciProcessKinds.Resources.NotFoundMessageInProcessKindFormat(processName, messageName);
      
      return string.Empty;
    }
    
  }
}