示例#1
0
        /// <summary>
        /// Metodo per la chiusura del TASK
        /// </summary>
        /// <param name="idTask"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static bool ChiudiLavorazioneTask(DocsPaVO.Task.Task task, string note, DocsPaVO.utente.InfoUtente infoUtente)
        {
            logger.Debug("Chiusura del TASK in BusinessLogic.Task.TaskManager  - metodo: ChiudiLavorazioneTask ");
            bool result = false;

            try
            {
                DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                result = t.ChiudiLavorazioneTask(task.STATO_TASK.ID_STATO_TASK, task.STATO_TASK.NOTE_LAVORAZIONE, infoUtente);

                if (!result)
                {
                    throw new Exception("Errore nella chiusura della lavorazione del task ID=" + task.ID_TASK);
                }

                // Se è presente un documento in risposta aggiorno nella profile lo stato del task
                if (!string.IsNullOrEmpty(task.ID_PROFILE_REVIEW))
                {
                    result = t.UpdateTaskStatusInProfile(task.ID_PROFILE_REVIEW, DocsPaDB.Query_DocsPAWS.Task.TaskStatus.CLOSED);
                }

                //Aggiorno le note nella dpa_trasm_utente
                if (result)
                {
                    result = t.UpdateNoteTrasmUtente(task.ID_TRASM_SINGOLA, note, infoUtente);
                }
            }
            catch (Exception e)
            {
                logger.Debug("Errore in BusinessLogic.Task.TaskManager  - metodo: CloseTask ", e);
                result = false;
            }

            return(result);
        }
示例#2
0
 public static DocsPaVO.Task.Task GetTaskByTrasmSingola(string idTrasmSingola, DocsPaVO.utente.InfoUtente infoUtente)
 {
     DocsPaVO.Task.Task task = new DocsPaVO.Task.Task();
     try
     {
         DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
         task = t.GetTaskByTrasmSingola(idTrasmSingola, infoUtente);
     }
     catch (Exception e)
     {
         logger.Error("Errore in BusinessLogic.Task.TaskManager  - metodo: GetTaskByTrasmSingola ", e);
     }
     return(task);
 }
示例#3
0
        /// <summary>
        /// Associa il nuovo documento creato al task di origine
        /// </summary>
        /// <param name="idTask"></param>
        /// <param name="docnumber"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static bool AssociaContributoAlTask(DocsPaVO.Task.Task task, DocsPaVO.documento.SchedaDocumento schedaDoc, DocsPaVO.utente.InfoUtente infoUtente)
        {
            logger.Debug("Chiusura del TASK in BusinessLogic.Task.TaskManager  - metodo: AssociaContributoAlTask ");
            bool result = false;

            try
            {
                DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                result = t.AssociaContributoAlTask(task.ID_TASK, schedaDoc.docNumber, infoUtente);

                // Aggiorno la profile
                result = t.UpdateTaskStatusInProfile(schedaDoc.docNumber, DocsPaDB.Query_DocsPAWS.Task.TaskStatus.IN_PROGRESS);

                //Dò visibilità al ruolo mittente del task.Se il contributo viene inserito nel fascicolo da cui è partito il task non è necessario
                if (result && !string.IsNullOrEmpty(task.ID_PROFILE))
                {
                    DocsPaVO.trasmissione.Trasmissione resultTrasm = ExecuteTransmission(schedaDoc, task.RUOLO_MITTENTE.idGruppo, task.UTENTE_MITTENTE.idPeople, infoUtente);

                    string desc   = string.Empty;
                    string method = "TRASM_DOC_" + (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).ragione.descrizione.ToUpper().Replace(" ", "_");
                    if (resultTrasm.infoDocumento.segnatura == null)
                    {
                        desc = "Trasmesso Documento : " + resultTrasm.infoDocumento.docNumber.ToString();
                    }
                    else
                    {
                        desc = "Trasmesso Documento : " + resultTrasm.infoDocumento.segnatura.ToString();
                    }
                    if (resultTrasm != null)
                    {
                        BusinessLogic.UserLog.UserLog.WriteLog(resultTrasm.utente.userId, resultTrasm.utente.idPeople, resultTrasm.ruolo.idGruppo, resultTrasm.utente.idAmministrazione, method, resultTrasm.infoDocumento.docNumber, desc, DocsPaVO.Logger.CodAzione.Esito.OK,
                                                               (infoUtente != null && infoUtente.delegato != null ? infoUtente.delegato : null), "0", (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).systemId);
                    }
                    else
                    {
                        BusinessLogic.UserLog.UserLog.WriteLog(resultTrasm.utente.userId, resultTrasm.utente.idPeople, resultTrasm.ruolo.idGruppo, resultTrasm.utente.idAmministrazione, method, resultTrasm.infoDocumento.docNumber, desc, DocsPaVO.Logger.CodAzione.Esito.KO,
                                                               (infoUtente != null && infoUtente.delegato != null ? infoUtente.delegato : null), "0", (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).systemId);
                    }
                }
            }
            catch (Exception e)
            {
                logger.Debug("Errore in BusinessLogic.Task.TaskManager  - metodo: AssociaContributoAlTask ", e);
                result = false;
            }

            return(result);
        }
示例#4
0
        /// <summary>
        /// Metodo per la creazione di un reminder
        /// </summary>
        /// <param name="task"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public bool InsertReminder(DocsPaVO.Task.Task task, string subject, DocsPaVO.utente.InfoUtente infoUtente)
        {
            bool   result   = false;
            string query    = string.Empty;
            string function = "DocsPaDb.Query_DocsPAWS.Reminder.InsertReminder";

            logger.DebugFormat("{0} - START ", function);
            if (task == null)
            {
                logger.DebugFormat("{0} - Parameter task is null", function);
                logger.DebugFormat("{0} - END ");
                return(false);
            }

            try
            {
                DocsPaUtils.Query q = DocsPaUtils.InitQuery.getInstance().getQuery("I_DPA_REMINDER");
                if (DBType.ToUpper().Equals("ORACLE"))
                {
                    q.setParam("IdReminder", DocsPaDbManagement.Functions.Functions.GetSystemIdNextVal("DPA_REMINDER"));
                }

                q.setParam("IdTask", task.ID_TASK);
                q.setParam("IdUtenteMitt", task.UTENTE_MITTENTE.idPeople);
                q.setParam("IdUtenteDest", task.UTENTE_DESTINATARIO.idPeople);
                q.setParam("DtaScadenza", DocsPaDbManagement.Functions.Functions.ToDate(task.STATO_TASK.DATA_SCADENZA));
                q.setParam("NumInvii", "0");
                q.setParam("Descr", GetStringParameterValue(subject));

                query = q.getSQL();
                logger.DebugFormat("{0} - {1} ", function, query);
                if (!ExecuteNonQuery(query))
                {
                    throw new Exception("Errore durante la creazione del reminder: " + query);
                }

                result = true;
            }
            catch (Exception e)
            {
                logger.Error(function, e);
            }

            logger.DebugFormat("{0} - END", function);
            return(result);
        }
示例#5
0
        /// <summary>
        /// Chiude il task
        /// </summary>
        /// <param name="task"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static bool ChiudiTask(DocsPaVO.Task.Task task, DocsPaVO.utente.InfoUtente infoUtente)
        {
            logger.Debug("Chiusura del TASK in BusinessLogic.Task.TaskManager  - metodo: ChiudiTask ");
            bool result = false;

            try
            {
                DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                result = t.ChiudiTask(task.STATO_TASK.ID_STATO_TASK, infoUtente);
            }
            catch (Exception e)
            {
                logger.Debug("Errore in BusinessLogic.Task.TaskManager  - metodo: ChiudiTask ", e);
                result = false;
            }

            return(result);
        }
示例#6
0
        /// <summary>
        /// Metodo per la creazione del task
        /// </summary>
        /// <param name="task"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        public static bool CreateTask(DocsPaVO.Task.Task task, DocsPaVO.utente.InfoUtente infoUtente)
        {
            logger.Debug("Creazione del TASK in BusinessLogic.Task.TaskManager  - metodo: CreateTask ");
            bool result = false;

            try
            {
                DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                result = t.InsertTask(task, infoUtente);
            }
            catch (Exception e)
            {
                logger.Debug("Errore in BusinessLogic.Task.TaskManager  - metodo: CreateTask ", e);
                result = false;
            }

            return(result);
        }
示例#7
0
        /// <summary>
        /// Metodo per la creazione di un reminder
        /// </summary>
        /// <param name="reminder"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        private bool CreateReminder(DocsPaVO.Task.Task task, string subject, DocsPaVO.utente.InfoUtente infoUtente)
        {
            _logger.Debug("BusinessLogic.Task.ReminderManager.CreateReminder");
            bool result = false;

            try
            {
                DocsPaDB.Query_DocsPAWS.Reminder r = new DocsPaDB.Query_DocsPAWS.Reminder();
                result = r.InsertReminder(task, subject, infoUtente);
            }
            catch (Exception e)
            {
                _logger.Debug("Errore in BusinessLogic.Task.ReminderManager.CreateReminder", e);
                result = false;
            }

            return(result);
        }
示例#8
0
        /// <summary>
        /// Invia un reminder
        /// </summary>
        /// <param name="reminder"></param>
        /// <param name="infoutente"></param>
        /// <returns></returns>
        public bool SendReminder(DocsPaVO.Task.Task task, DocsPaVO.utente.InfoUtente infoutente)
        {
            _logger.Info("BEGIN");
            bool ret = false;

            try
            {
                BusinessLogic.interoperabilita.CalendarMail.MailRequest request = CreateMailRequest(task.UTENTE_MITTENTE.idAmministrazione);

                request.Subject     = ComputeMailSubject(task);
                request.Appointment = new interoperabilita.CalendarMail.iCalendar.AppointmentInfo()
                {
                    Sequence       = 1,
                    UID            = BusinessLogic.interoperabilita.CalendarMail.iCalendar.UidGenerator.Create(),
                    OrganizerName  = task.UTENTE_MITTENTE.cognome,
                    OrganizerEMail = task.UTENTE_MITTENTE.email,
                    Method         = BusinessLogic.interoperabilita.CalendarMail.iCalendar.AppointmentMethodTypes.REQUEST,
                    Status         = BusinessLogic.interoperabilita.CalendarMail.iCalendar.AppointmentStatusTypes.CONFIRMED,
                    DtStamp        = DateTime.Now,
                    Summary        = request.Subject,
                    DtStart        = DateTime.Now,
                    DtEnd          = DateTime.Now,
                    Alert          = new interoperabilita.CalendarMail.iCalendar.AlertInfo()
                    {
                        TriggerDays = GetTriggerDays(task.STATO_TASK.DATA_SCADENZA),
                        Description = request.Subject
                    }
                };

                // Invio messaggio
                DispatchMail(request);

                // Salvo i dati su db
                CreateReminder(task, request.Subject, infoutente);

                ret = true;
            }
            catch (Exception e)
            {
                _logger.Error(e.Message);
            }

            return(ret);
        }
示例#9
0
        public static bool RiapriLavorazione(DocsPaVO.Task.Task task, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo)
        {
            bool retVal = false;

            try
            {
                // Contesto transazionale
                using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
                {
                    if (!string.IsNullOrEmpty(task.ID_PROJECT) && !string.IsNullOrEmpty(task.ID_PROFILE_REVIEW))
                    {
                        //Inserisco il contributo creato nella precedente lavorazione all'interno di un sottofascicolo
                        string descNewFolder = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_NOME_SOTTOFASCICOLO");
                        DocsPaVO.fascicolazione.Fascicolo fascicolo        = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(task.ID_PROJECT, infoUtente);
                        DocsPaVO.fascicolazione.Folder    folder           = BusinessLogic.Fascicoli.FolderManager.getFolderByIdFascicolo(infoUtente.idPeople, infoUtente.idGruppo, fascicolo);
                        DocsPaVO.fascicolazione.Folder    folderContributo = (from f in folder.childs.Cast <DocsPaVO.fascicolazione.Folder>() where f.descrizione.Equals(descNewFolder) select f).FirstOrDefault();
                        if (folderContributo == null)
                        {
                            DocsPaVO.fascicolazione.Folder newFolder = new DocsPaVO.fascicolazione.Folder();
                            newFolder.idFascicolo = folder.idFascicolo;
                            newFolder.idParent    = folder.systemID;
                            newFolder.descrizione = descNewFolder;
                            DocsPaVO.fascicolazione.ResultCreazioneFolder result;
                            folderContributo = BusinessLogic.Fascicoli.FolderManager.newFolder(newFolder, infoUtente, ruolo, out result);
                        }
                        if (folderContributo != null && !string.IsNullOrEmpty(folderContributo.systemID))
                        {
                            bool isInFolder = BusinessLogic.Fascicoli.FascicoloManager.IsDocumentoInFolder(task.ID_PROFILE_REVIEW, folderContributo.systemID);
                            if (!isInFolder)
                            {
                                string msg;
                                //Rimuovo dal vecchio fascicolo
                                BusinessLogic.Fascicoli.FolderManager.RemoveDocumentFromFolder(infoUtente, task.ID_PROFILE_REVIEW, folder, "", out msg);
                                System.Collections.ArrayList listFolder = BusinessLogic.Fascicoli.FolderManager.GetFoldersDocument(task.ID_PROFILE_REVIEW, task.ID_PROJECT);
                                foreach (DocsPaVO.fascicolazione.Folder f in listFolder)
                                {
                                    BusinessLogic.Fascicoli.FolderManager.RemoveDocumentFromFolder(infoUtente, task.ID_PROFILE_REVIEW, f, "", out msg);
                                }
                                //Iserisco nel sottofascicolo indicato
                                retVal = BusinessLogic.Fascicoli.FolderManager.addDocFolder(infoUtente, task.ID_PROFILE_REVIEW, folderContributo.systemID, false, out msg);
                            }
                        }
                        if (retVal)
                        {
                            //Riapro la lavorazione del task
                            DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                            retVal = t.RiapriLavorazioneTask(task);
                        }
                    }
                    else
                    {
                        //Riapro la lavorazione del task
                        DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                        retVal = t.RiapriLavorazioneTask(task);
                    }
                    if (retVal)
                    {
                        transactionContext.Complete();
                    }
                    else
                    {
                        transactionContext.Dispose();
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error("Errore in BusinessLogic.Task.TaskManager  - metodo: RiapriLavorazione ", e);
            }
            return(retVal);
        }
示例#10
0
 private string ComputeMailSubject(DocsPaVO.Task.Task task)
 {
     return(string.Format("Reminder : {0} - {1}", task.DESC_RAGIONE_TRASM, task.ID_TASK));
 }