Ejemplo n.º 1
0
        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();
            }
        }
        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();
            }
        }