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(); } }