public string GetProtocolDocument(string protocolDTO)
        {
            try
            {
                ProtocolDTO protocol = protocolDTO.Deserialize <ProtocolDTO>();
                if (!protocol.HasId())
                {
                    throw new ArgumentNullException("Nessun Id definito per il protocollo");
                }

                Protocol             domain   = FacadeFactory.Instance.ProtocolFacade.GetById(protocol.UniqueId.Value);
                ProtocolDocumentDTO  dto      = FacadeFactory.Instance.ProtocolFacade.GetProtocolMainDocumentPdfConverted(domain);
                APIResponse <string> response = new APIResponse <string>(dto.Serialized);
                return(response.Serialize());
            }
            catch (Exception ex)
            {
                LogError(ex);
                var response = new APIResponse <TaskDTO>(ex);
                return(response.Serialize());
            }
            finally
            {
                NHibernateSessionManager.Instance.CloseTransactionAndSessions();
            }
        }
        public string InsertProtocol(string protocolDTO, string taskDTO)
        {
            try
            {
                ProtocolDTO protocol = protocolDTO.Deserialize <ProtocolDTO>();
                protocol.IdTenantAOO = ConfigurationHelper.CurrentTenantAOOId;
                protocol.Direction   = 1; // Sempre in uscita.
                FileLogger.Debug(LogName.FileLog, string.Concat(JsonConvert.SerializeObject(protocol, DocSuiteContext.DefaultJsonSerializerSettings).Take(1000)));
                if (protocol.HasSenders())
                {
                    foreach (var item in protocol.Senders)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code = item.EmailAddress;
                        }
                    }
                }

                if (protocol.HasRecipients())
                {
                    foreach (var item in protocol.Recipients)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code = item.EmailAddress;
                        }
                    }
                }

                if (protocol.HasFascicles())
                {
                    foreach (var item in protocol.Fascicles)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code = item.EmailAddress;
                        }
                    }
                }

                var result = ProtocolService.Insert(protocol);

                var task = taskDTO.Deserialize <TaskDTO>();
                task.AddProtocol(result);
                task = TaskService.Update(task);

                return(result.SerializeAsResponse());
            }
            catch (Exception ex)
            {
                LogError(ex);
                var response = new APIResponse <ProtocolDTO>(ex);
                return(response.Serialize());
            }
            finally
            {
                NHibernateSessionManager.Instance.CloseTransactionAndSessions();
            }
        }
        internal static MailDTO PairToProtocol(MailDTO mailDTO, ProtocolDTO protocolDTO)
        {
            var mailbox = (MailboxDTO)mailDTO.Mailbox;

            if (mailbox.IsPEC())
            {
                FacadeFactory.Instance.PECMailFacade.PairToProtocol(mailDTO, protocolDTO);
                return(mailDTO);
            }
            else if (mailbox.IsPOL())
            {
                //Non eseguo alcuna attività in quanto l'associazione viene già fatta nel metodo di invio POL
                return(mailDTO);
            }
            else if (mailbox.IsMessage())
            {
                MessageEmail    savedMessage       = FacadeFactory.Instance.MessageEmailFacade.GetById(int.Parse(mailDTO.Id));
                DSWMessage      currentMessage     = savedMessage.Message;
                Protocol        protocol           = FacadeFactory.Instance.ProtocolFacade.GetById(protocolDTO.UniqueId.Value);
                ProtocolMessage newProtocolMessage = new ProtocolMessage(ref protocol, ref currentMessage);
                FacadeFactory.Instance.ProtocolMessageFacade.Save(ref newProtocolMessage);
                return(mailDTO);
            }

            var message = string.Format("Mailbox.TypeName \"{0}\" non gestito.", mailDTO.Mailbox.TypeName);

            throw new NotImplementedException(message);
        }
Beispiel #4
0
        internal static MailDTO Send(MailDTO dto, ProtocolDTO protocolDTO, bool sendPdf = true)
        {
            MailboxDTO mailbox = (MailboxDTO)dto.Mailbox;

            if (mailbox.IsPEC())
            {
                dto.Id = FacadeFactory.Instance.PECMailFacade.SendMail(dto, sendPdf).ToString();
                return(dto);
            }
            else
            {
                if (mailbox.IsPOL())
                {
                    if (protocolDTO == null)
                    {
                        throw new ArgumentNullException("protDTO", "L'invio tramite Poste WEB è possibile solamente se è presente un protocollo da associare");
                    }

                    dto.Id = FacadeFactory.Instance.PosteOnLineRequestFacade.SendLettera(dto, protocolDTO).ToString();
                    return(dto);
                }
                else
                {
                    if (mailbox.IsMessage())
                    {
                        dto.Id = FacadeFactory.Instance.MessageEmailFacade.CreateEmailMessage(dto, sendPdf).Id.ToString();
                        return(dto);
                    }
                }
            }

            var message = string.Format("Mailbox.TypeName \"{0}\" non gestito.", dto.Mailbox.TypeName);

            throw new NotImplementedException(message);
        }
Beispiel #5
0
        internal static void AddProtocol(TaskDTO taskDTO, ProtocolDTO protocolDTO)
        {
            var header   = FacadeFactory.Instance.TaskHeaderFacade.GetById(taskDTO.Id.Value);
            var protocol = new Protocol();

            protocol.Id = protocolDTO.UniqueId.Value;

            header.AddProtocol(protocol);
            FacadeFactory.Instance.TaskHeaderFacade.Update(ref header);
        }
        internal static MailDTO PairToProtocol(MailDTO mailDTO, ProtocolDTO protocolDTO)
        {
            var mailbox = (MailboxDTO)mailDTO.Mailbox;

            if (mailbox.IsPEC())
            {
                FacadeFactory.Instance.PECMailFacade.PairToProtocol(mailDTO, protocolDTO);
                return(mailDTO);
            }

            var message = string.Format("Mailbox.TypeName \"{0}\" non gestito.", mailDTO.Mailbox.TypeName);

            throw new NotImplementedException(message);
        }
        public string InsertProtocol(string protocolDTO)
        {
            try
            {
                var protocol = protocolDTO.Deserialize <ProtocolDTO>();
                protocol.IdTenantAOO = ConfigurationHelper.CurrentTenantAOOId;
                switch (protocol.Direction)
                {
                case 1:
                    if (!(protocol.HasRecipients() || protocol.HasRecipientsManual()))
                    {
                        throw new Exception("Nessun destinatario impostato nel DTO passato.");
                    }
                    break;

                case -1:
                    if (!(protocol.HasSenders() || protocol.HasSendersManual()))
                    {
                        throw new Exception("Nessun mittente impostato nel DTO passato.");
                    }
                    break;

                default:
                    throw new Exception("Direction non valida");
                }

                ProtocolDTO result = ProtocolService.InsertInvoice(protocol);
                if (result.IdProtocolKind.HasValue && (short)ProtocolKind.FatturePA == result.IdProtocolKind.Value)
                {
                    MailDTO mailDTO = new MailDTO();
                    mailDTO.Subject = result.Subject;
                    mailDTO.Sender  = new ContactDTO();
                    Container    currentContainer    = FacadeFactory.Instance.ContainerFacade.GetById(protocol.Container.Id.Value, false);
                    ContainerEnv currentContainerEnv = new ContainerEnv(DocSuiteContext.Current, ref currentContainer);
                    if (string.IsNullOrEmpty(currentContainerEnv.InvoicePAContactSDI) || !currentContainerEnv.InvoicePAMailboxSenderId.HasValue)
                    {
                        FileLogger.Warn(LogName.FileLog, string.Concat("Protocollo ", result.Number, " di fattura ", result.InvoiceNumber, " inserito correttamente con invio PEC fallito. [Parametro InvoicePAContactSDI ( ", currentContainerEnv.InvoicePAContactSDI, " ) o InvoicePAMailboxSender ( ", currentContainerEnv.InvoicePAMailboxSenderId, " ) mancante ]"));
                        throw new ApplicationException(string.Concat("Protocollo ", result.Number, " di fattura ", result.InvoiceNumber, " inserito correttamente con invio PEC fallito. [Parametro InvoicePAContactSDI ( ", currentContainerEnv.InvoicePAContactSDI, " ) o InvoicePAMailboxSender ( ", currentContainerEnv.InvoicePAMailboxSenderId, " ) mancante ]"));
                    }
                    mailDTO.AddRecipient(new ContactDTO(currentContainerEnv.InvoicePAContactSDI));
                    PECMailBox mailbox = FacadeFactory.Instance.PECMailboxFacade.GetById(currentContainerEnv.InvoicePAMailboxSenderId.Value);
                    mailDTO.Mailbox             = new MailboxDTO(mailbox.MailBoxName).CopyFrom(mailbox);
                    mailDTO.Sender.EmailAddress = mailbox.MailBoxName;
                    mailDTO.Body = result.Subject;
                    ProtocolDTO mailProtocolDTO = result;
                    mailProtocolDTO.Annexes     = new List <DocumentDTO>().ToArray();
                    mailProtocolDTO.Attachments = new List <DocumentDTO>().ToArray();
                    var inputMail = mailDTO.Serialize();
                    var email     = SendProtocolMail(inputMail, mailProtocolDTO.Serialize());
                }
                return(result.SerializeAsResponse());
            }
            catch (Exception ex)
            {
                var response = new APIResponse <ProtocolDTO>(ex);
                return(response.Serialize());
            }
            finally
            {
                NHibernateSessionManager.Instance.CloseTransactionAndSessions();
            }
        }
 internal static ProtocolDTO InsertInvoice(ProtocolDTO dto)
 {
     return(FacadeFactory.Instance.ProtocolFacade.InsertInvoiceProtocol(dto));
 }