Esempio n. 1
0
    public static string GetAddressees(IOutgoingDocumentBase document)
    {
      var result = string.Empty;
      if (document.Addressees.Count() > 4)
        result = OutgoingDocumentBases.Resources.ToManyAddressees;
      else
      {
        foreach (var addresse in document.Addressees.OrderBy(a => a.Number))
        {
          var person = Sungero.Parties.People.As(addresse.Correspondent);
          // Не выводить должность для персоны.
          if (person == null)
          {
            // Должность адресата в дательном падеже.
            var jobTitle = string.Format("<{0}>", OutgoingDocumentBases.Resources.JobTitle);
            if (addresse.Addressee != null && !string.IsNullOrEmpty(addresse.Addressee.JobTitle))
              jobTitle = CaseConverter.ConvertJobTitleToTargetDeclension(addresse.Addressee.JobTitle, Sungero.Core.DeclensionCase.Dative);

            result += jobTitle;
            result += Environment.NewLine;
          }
          
          // Организация адресата/ФИО Персоны.
          if (person == null)
            result += addresse.Correspondent.Name;
          else
          {
            var personName = CommonLibrary.PersonFullName.Create(person.LastName, person.FirstName, person.MiddleName, CommonLibrary.PersonFullNameDisplayFormat.LastNameAndInitials);
            result += CaseConverter.ConvertPersonFullNameToTargetDeclension(personName, Sungero.Core.DeclensionCase.Dative);
          }
          
          result += Environment.NewLine;
          
          // Не выводить ФИО адресата для персоны.
          if (person == null)
          {
            var addresseName = string.Format("<{0}>", OutgoingDocumentBases.Resources.InitialsAndLastName);
            // И.О. Фамилия адресата в дательном падеже.
            if (addresse.Addressee != null)
            {
              addresseName = addresse.Addressee.Name;
              if (addresse.Addressee.Person != null)
              {
                var personFullName = CommonLibrary.PersonFullName.Create(addresse.Addressee.Person.LastName,
                                                                         addresse.Addressee.Person.FirstName,
                                                                         addresse.Addressee.Person.MiddleName,
                                                                         CommonLibrary.PersonFullNameDisplayFormat.InitialsAndLastName);
                addresseName = CaseConverter.ConvertPersonFullNameToTargetDeclension(personFullName, Sungero.Core.DeclensionCase.Dative);
              }
            }
            result += addresseName;
            result += Environment.NewLine;
          }
          
          // Адрес доставки.
          var postalAddress = string.Format("<{0}>", OutgoingDocumentBases.Resources.PostalAddress);
          if (!string.IsNullOrEmpty(addresse.Correspondent.PostalAddress))
            postalAddress = addresse.Correspondent.PostalAddress;
          result += postalAddress;
          result += Environment.NewLine;
          result += Environment.NewLine;
        }
      }
      return result.Trim();
    }