public string GetCollaborationsToAlert(bool checkExpiredCollaborations = false)
        {
            try
            {
                var collaborations = FacadeFactory.Instance.CollaborationFacade.GetCollaborationsExpired(checkExpiredCollaborations);
                if (!collaborations.Any())
                {
                    return(new CollaborationDTO[] {}.SerializeAsResponse());
                }

                var dtoTransformArray = collaborations.ToArray();
                return(dtoTransformArray.SerializeAsResponse());
            }
            catch (Exception ex)
            {
                var response = new APIResponse <CollaborationDTO>(ex);
                return(response.Serialize());
            }
            finally
            {
                NHibernateSessionManager.Instance.CloseTransactionAndSessions();
            }
        }
 public string GetProtocolsToSend()
 {
     try
     {
         var status = new List <int>
         {
             (int)ProtocolStatusId.Attivo,
             (int)ProtocolStatusId.PAInvoiceRefused,
             (int)ProtocolStatusId.PAInvoiceSdiRefused
         };
         var dtos = FacadeFactory.Instance.ProtocolFacade.GetInvoicePaProtocolsByStatuses(status).ToArray();
         return(dtos.SerializeAsResponse());
     }
     catch (Exception ex)
     {
         var response = new APIResponse <MailboxDTO[]>(ex);
         return(response.Serialize());
     }
     finally
     {
         NHibernateSessionManager.Instance.CloseTransactionAndSessions();
     }
 }
Пример #3
0
        public string SendProtocolMail(string mailDTO, string protocolDTO, string taskDTO)
        {
            try
            {
                var mail     = mailDTO.Deserialize <MailDTO>();
                var protocol = protocolDTO.Deserialize <ProtocolDTO>();
                if (!protocol.HasAnyDocument() && protocol.HasId())
                {
                    var domain = FacadeFactory.Instance.ProtocolFacade.GetById(protocol.UniqueId.Value);
                    protocol.CopyFrom(domain);
                }
                mail.CopyFrom(protocol);

                if (mail.Sender != null && !((MailboxDTO)mail.Mailbox).IsPOL())
                {
                    if (!RegexHelper.IsValidEmail(mail.Sender.EmailAddress))
                    {
                        mail.Sender.Code         = mail.Sender.EmailAddress;
                        mail.Sender.EmailAddress = SearchEmailAddressFromCode(mail.Sender.Code);
                    }
                }

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

                if (mail.HasRecipientsCc())
                {
                    foreach (var item in mail.RecipientsCc)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code         = item.EmailAddress;
                            item.EmailAddress = SearchEmailAddressFromCode(item.Code);
                        }
                    }
                }

                if (mail.HasRecipientsBcc())
                {
                    foreach (var item in mail.RecipientsBcc)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code         = item.EmailAddress;
                            item.EmailAddress = SearchEmailAddressFromCode(item.Code);
                        }
                    }
                }

                mail = MailService.Send(mail, protocol);

                mail = PairToProtocol(mail, protocol);

                var task = taskDTO.Deserialize <TaskDTO>();
                task.AddMail(mail);
                task = TaskService.Update(task);

                return(mail.SerializeAsResponse());
            }
            catch (Exception ex)
            {
                LogError(ex);
                var response = new APIResponse <MailDTO>(ex);
                return(response.Serialize());
            }
            finally
            {
                NHibernateSessionManager.Instance.CloseTransactionAndSessions();
            }
        }
Пример #4
0
        public string SendMail(string mailDTO, string taskDTO)
        {
            try
            {
                var mail = mailDTO.Deserialize <MailDTO>();

                if (mail.Sender != null && !((MailboxDTO)mail.Mailbox).IsPOL())
                {
                    if (!RegexHelper.IsValidEmail(mail.Sender.EmailAddress))
                    {
                        mail.Sender.Code         = mail.Sender.EmailAddress;
                        mail.Sender.EmailAddress = SearchEmailAddressFromCode(mail.Sender.Code);
                    }
                }

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

                if (mail.HasRecipientsCc())
                {
                    foreach (var item in mail.RecipientsCc)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code         = item.EmailAddress;
                            item.EmailAddress = SearchEmailAddressFromCode(item.Code);
                        }
                    }
                }

                if (mail.HasRecipientsBcc())
                {
                    foreach (var item in mail.RecipientsBcc)
                    {
                        if (!RegexHelper.IsValidEmail(item.EmailAddress))
                        {
                            item.Code         = item.EmailAddress;
                            item.EmailAddress = SearchEmailAddressFromCode(item.Code);
                        }
                    }
                }

                var result = MailService.Send(mail);

                var task = taskDTO.Deserialize <TaskDTO>();
                task.AddMail(mail);
                task = TaskService.Update(task);

                return(result.SerializeAsResponse());
            }
            catch (Exception ex)
            {
                LogError(ex);
                var response = new APIResponse <MailDTO>(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();
            }
        }