DciProcessKindHandlers.cs 1.45 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;

namespace DirRX.DciCore
{
  partial class DciProcessKindServerHandlers
  {

    public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
    {
      var validationText = string.Empty;
      // Проверить корректность имени процесса.
      validationText = Functions.Module.ValidateDciName(_obj.Name);
      if (!string.IsNullOrWhiteSpace(validationText))
        e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectProcessNameFormat(validationText));
      
      // Проверить корректность имени сообщений.
      foreach (var row in _obj.Messages)
      {
        validationText = Functions.Module.ValidateDciName(row.Name);
        if (!string.IsNullOrWhiteSpace(validationText))
          e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectMessageNameFormat(validationText));
      }
      
      // Проверить дубли среди имен сообщений в разрезе сообщения.
      var doubleName = _obj.Messages.GroupBy(x => x.Name)
        .Where(g => g.Count() > 1)
        .Select(y => y.Key)
        .FirstOrDefault();
      if (!string.IsNullOrWhiteSpace(doubleName))
        e.AddError(DirRX.DciCore.DciProcessKinds.Resources.NotUniqueMessageNameFormat(doubleName, _obj.Name));
    }
  }

}