ArchiveRequestTaskServerFunctions.cs 3.78 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Container.ArchiveRequestTask;
using Newtonsoft.Json.Linq;

namespace DirRX.Container.Server
{
  partial class ArchiveRequestTaskFunctions
  {
    /// <summary>
    /// Сформировать json-строку для передачи запроса в архив.
    /// </summary>
    /// <returns>Данные для передачи в архив в виде json-строки.</returns>
    public virtual string CreateRequestData()
    {
      var json = new JObject();

      var settings = PublicFunctions.ArchiveSetting.GetSettings();
      var initiator = string.Empty;
      
      if (_obj.Initiator == null)
      {
        var employee = Storage.PublicFunctions.Module.Remote.GetEmployeeForCurentUser();
        if (employee == null)
          initiator = _obj.ArchiveLogin;
        else
          initiator = employee.DisplayValue;
      }
      else
      {
        initiator = _obj.Initiator.Name;
        
        if (!string.IsNullOrWhiteSpace(_obj.Initiator.Phone))
          json.Add("ContactInfo", _obj.Initiator.Phone);
        
        if (!string.IsNullOrWhiteSpace(_obj.Initiator.Email))
          json.Add("Email", _obj.Initiator.Email);
      }

      json.Add("Source", settings.SourceUid);
      json.Add("RequestKind", _obj.RequestKind.ToString());
      json.Add("Initiator", initiator);
      
      if (!string.IsNullOrWhiteSpace(_obj.ArchiveLogin))
        json.Add("ArchiveLogin", _obj.ArchiveLogin);
      
      json.Add("RequestText", _obj.ActiveText);
      
      return json.ToString();
    }
    
    /// <summary>
    /// Сформировать json-результат запроса с сообщением об ошибке.
    /// </summary>
    /// <param name="errorMessage">Сообщение об ошибке.</param>
    /// <returns>Результат запроса в виде json-строки.</returns>
    public virtual string CreateRequestResultsWithError(string errorMessage)
    {
      var json = new JObject();
      
      json.Add("Status", "Error");
      json.Add("Message", errorMessage);
      
      return json.ToString();
    }
    
    /// <summary>
    /// Сформировать текст уведомления о результатах.
    /// </summary>
    /// <returns>Текст уведомления.</returns>
    public virtual string GetArchiveRequestNoticeText()
    {
      // Распарсить json-результаты.
      var json = JObject.Parse(_obj.RequestResults);
      var noticeText = json.Value<string>("Message");
      
      var documentUrl = json.Value<string>("Url");
      if (!string.IsNullOrEmpty(documentUrl))
      {
        noticeText += Environment.NewLine;
        noticeText += "Ссылка на документ(ы): " + documentUrl;
      }

      if (_obj.RequestKind == RequestKind.Access)
      {
        var login = json.Value<string>("UserLogin");
        
        if (!string.IsNullOrEmpty(login))
        {
          noticeText += Environment.NewLine;
          noticeText += "Предоставлен доступ в архив";

          var termFrom = json.Value<string>("AccessTermFrom");
          if (!string.IsNullOrEmpty(termFrom))
            noticeText += " с " + termFrom;
          
          var termTo = json.Value<string>("AccessTermTo");
          if (!string.IsNullOrEmpty(termTo))
            noticeText += " по " + termTo;
          
          noticeText += ". Логин: " + login;
          noticeText += Environment.NewLine;
        }
      }
      
      var note = json.Value<string>("Note");
      if (!string.IsNullOrEmpty(note))
      {
        noticeText += Environment.NewLine;
        noticeText += note;
      }
      
      return noticeText;
    }
    
  }
}