using Consulenza.ReportCommon;
using Consulenza.ReportModeler.Manager;

namespace Consulenza.Base.Business
{
    public static class GeneratorService
    {
        /// <summary>
        /// Ottiene un array binario del PDF del report di Proposta di ConsulenzaBase.
        /// </summary>
        /// <param name="chiaveCliente">Chiave del cliente</param>
        /// <param name="chiaveProposta">Chiave della proposta</param>
        /// <returns></returns>
        public static byte[] CreaReport_Proposta(int chiaveCliente, int chiaveProposta, bool unica)
        {
            var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, unica);
            var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, unica);
            var delegato = DataService.PrivateDelegatoManarger.RecuperaDelegato(0, chiaveProposta, unica);
            //var generator = new ReportStructManager(cliente, privateBanker);
            var generator = new ReportStructManager(cliente, privateBanker, delegato);

            return generator.CreateReport(chiaveCliente, chiaveProposta, ReportType.Base_Proposta, unica);
        }

        /// <summary>
        /// Ottiene un array binario del PDF del report di Proposta di ConsulenzaBase.
        /// </summary>
        /// <param name="codiceRete">Codice della Rete cui il PB (Private Banker) è associato.</param>
        /// <param name="codicePb">Codice del Private Banker</param>
        /// <param name="codiceFiscale">Codice fiscale</param>
        /// <param name="partitaIva">Partita IVA</param>
        /// <param name="codiceMandato">Codice mandato</param>
        /// <param name="chiaveProposta">Codice Mandato(nel caso di una Fiduciaria)</param>
        /// <returns>byte[]</returns>
        public static byte[] CreaReport_Proposta(string codiceRete, string codicePb, string codiceFiscale, string partitaIva, string codiceMandato, int chiaveProposta, bool unica)
        {
            var chiaveCliente = DataService.ClienteManager.RecuperaChiaveCliente(codiceRete, codiceFiscale, partitaIva, codiceMandato, unica);

            var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, unica);
            var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, unica);
            var delegato = DataService.PrivateDelegatoManarger.RecuperaDelegato(0, chiaveProposta, unica);
            var generator = new ReportStructManager(cliente, privateBanker, delegato);
            return generator.CreateReport(chiaveCliente, chiaveProposta, ReportType.Base_Proposta, unica);
        }
    }
}
