Ejemplo n.º 1
0
        /// <summary>
        /// Fonction permettant la création de nouveaux Time Tracking via l'API Gemini
        /// </summary>
        /// <param name="pCritere">Critère de Time Tracking</param>
        /// <remarks>JClaud 2015-03-19 Création</remarks>
        public void CreateTimeTracking(ParamTimeTrackingDTO pParam)
        {
            //jc - Déclaration des variables
            ServiceManager lService = pParam.UserCreation != null?LanceAuthentification(pParam.UserCreation) : LanceAuthentification(pParam.User);

            IssueTimeTrackingDto lTimeTracking = new IssueTimeTrackingDto();

            //jc- affectation des variables du Time Tracking
            lTimeTracking.Entity.ProjectId  = pParam.Ticket.Projet.IdProjet;
            lTimeTracking.Entity.IssueId    = pParam.Ticket.IdTicket;
            lTimeTracking.Entity.UserId     = Convert.ToInt32(pParam.User.IdGemini);
            lTimeTracking.Entity.Comment    = pParam.TimeTracking.CommentaireTimeTracking;
            lTimeTracking.Entity.Hours      = pParam.TimeTracking.Heures;
            lTimeTracking.Entity.Minutes    = pParam.TimeTracking.Minutes;
            lTimeTracking.Entity.Created    = pParam.TimeTracking.DateAjoutTT_BDD;
            lTimeTracking.Entity.EntryDate  = pParam.TimeTracking.DateSaisieTT_Ticket;
            lTimeTracking.Entity.TimeTypeId = Convert.ToInt32(pParam.TimeType.IdTimeType);

            //jc- on enregistre le nouveau Time Tracking
            lService.Item.LogTime(lTimeTracking.Entity);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Fonction permettant de créer un nouveau en fonction des paramètres
        /// </summary>
        /// <param name="pCriete">Critère de sélection</param>
        /// <returns>Ticket correspondant</returns>
        /// <remarks>Guillaume Bécard - 2015-02-20 - Création</remarks>
        public int CreateTicket(ParamCreationTicketDTO pCritere)
        {
            //jc - Déclaration des variables
            ServiceManager       lService      = LanceAuthentification(pCritere.User);
            ServiceManager       lServiceData  = LanceAuthentification(CopyUserAsAPI(pCritere.User));
            IssueDto             lNewTicket    = new IssueDto();
            IssueTimeTrackingDto lTimeTracking = new IssueTimeTrackingDto();

            #region TICKET

            //jc- on affecte les variables au nouveau ticket
            lNewTicket.Entity.ProjectId = pCritere.Ticket.Projet.IdProjet;
            //jc- si un déclarant est indiqué dans le ticket
            if (pCritere.Ticket.Declarant != null)
            {
                //jc- création du ticket par cette personne
                lNewTicket.Entity.ReportedBy = Convert.ToInt32(pCritere.Ticket.Declarant.IdGemini);
            }
            else
            {
                //jc- sinon création du ticket par la personne en cours
                lNewTicket.Entity.ReportedBy = Convert.ToInt32(pCritere.User.IdGemini);
            }

            //jc- si le type de ticket n'est pas déjà affecter alors on lui affecte une valeur par défault
            lNewTicket.Entity.TypeId = (pCritere.Ticket.Type == null) ? 80 : pCritere.Ticket.Type.IdType;

            //jc- si une ressource est indiquée dans le ticket
            if (pCritere.Ticket.Ressource != null)
            {
                //jc- on affecte cette personne en ressource du ticket
                lNewTicket.Entity.Resources = "|" + Convert.ToInt32(pCritere.Ticket.Ressource.IdGemini) + "|";
            }

            lNewTicket.Entity.Title            = pCritere.Ticket.NomTicket;
            lNewTicket.Entity.Description      = pCritere.Ticket.DescriptionTicket;
            lNewTicket.Entity.StatusId         = pCritere.Ticket.Statut.IdStatut;
            lNewTicket.Entity.ResolutionId     = (pCritere.Ticket.Resolution == null) ? 0 : pCritere.Ticket.Resolution.IdResolution;
            lNewTicket.Entity.PercentComplete  = Convert.ToInt32(pCritere.Ticket.Avancement);
            lNewTicket.Entity.EstimatedHours   = pCritere.Ticket.Temps.EstimateHours;
            lNewTicket.Entity.EstimatedMinutes = pCritere.Ticket.Temps.EstimateMinutes;
            lNewTicket.Entity.StartDate        = System.DateTime.Now.Date;
            lNewTicket.Entity.DueDate          = System.DateTime.Now;
            lNewTicket.Entity.Created          = System.DateTime.Now;
            lNewTicket.Entity.Revised          = System.DateTime.Now;
            lNewTicket.Entity.ResolvedDate     = System.DateTime.Now;
            lNewTicket.Entity.ClosedDate       = System.DateTime.Now;
            lNewTicket.Entity.Creator          = Convert.ToInt32(pCritere.User.IdGemini);

            //jc- gestion des versions si celles-ci sont renseignées
            if (pCritere.Ticket.VersionAffectee != 0)
            {
                lNewTicket.Entity.AffectedVersions = "|" + pCritere.Ticket.VersionAffectee.ToString() + "|";
            }
            if (pCritere.Ticket.RegleDansLaVersion != 0)
            {
                lNewTicket.Entity.FixedInVersionId = pCritere.Ticket.RegleDansLaVersion;
            }

            //jc- gestion du composant s'il est renseigné
            if (pCritere.Ticket.Composant != null)
            {
                lNewTicket.Entity.Components = "|" + pCritere.Ticket.Composant.IdComposant.ToString() + "|";
            }

            //jc- affectation des variables constantes pour le nouveau ticket
            lNewTicket.Entity.PriorityId = 43;
            lNewTicket.Entity.Visibility = 1;
            lNewTicket.Entity.IsParent   = false;
            lNewTicket.Entity.Points     = 0;

            //jc- enregistrement du nouveau ticket en base
            lNewTicket = lServiceData.Item.Create(lNewTicket.Entity);

            #endregion

            #region TIME TRACKING

            //jc- si le temps à loggé est différent de 00h00min
            if (!(pCritere.Ticket.Temps.LoggedHours == 0 && pCritere.Ticket.Temps.LoggedMinutes == 0))
            {
                //jc- affectation des variables du Time Tracking
                lTimeTracking.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lTimeTracking.Entity.IssueId   = lNewTicket.Entity.Id;
                lTimeTracking.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lTimeTracking.Entity.Comment   = pCritere.Ticket.DescriptionTimeTracking;
                lTimeTracking.Entity.Hours     = pCritere.Ticket.Temps.LoggedHours;
                lTimeTracking.Entity.Minutes   = pCritere.Ticket.Temps.LoggedMinutes;
                lTimeTracking.Entity.Created   = pCritere.Ticket.Temps.DateDebut;
                lTimeTracking.Entity.EntryDate = pCritere.Ticket.Temps.DateDebut;
                //tbh - Si le type de temps est renseigné, l'assigné, sinon type de temps par défault (facturable client)
                lTimeTracking.Entity.TimeTypeId = (pCritere.Ticket.TypeTemp != null) ? (int)pCritere.Ticket.TypeTemp.IdTimeType : 52;

                //jc- on enregistre le nouveau Time Tracking
                lTimeTracking = lService.Item.LogTime(lTimeTracking.Entity);
            }

            #endregion

            #region CLIENT

            //jc- si le client est renseigné
            if (pCritere.Ticket.Client != null)
            {
                CustomFieldDataDto lCustomFieldData = new CustomFieldDataDto();

                //jc- affectation des variables a la cause
                lCustomFieldData.Entity.Data      = pCritere.Ticket.Client.Identifiant.ToString();
                lCustomFieldData.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldData.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldData.Entity.IssueId   = lNewTicket.Entity.Id;
                //jc- affectation des constantes au nouveau client
                lCustomFieldData.Entity.CustomFieldId = (lNewTicket.Entity.ProjectId == 95) ? 100 : 99;
                lCustomFieldData.Entity.Created       = System.DateTime.Now;
                lCustomFieldData.Entity.Revised       = System.DateTime.Now;

                //jc- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldData.Entity);
            }

            #endregion

            #region COMMENT

            //jc- si la description pour un commentaire est renseigné et le projet n'est pas Support ACA (101) ou Support Client (107)
            if (pCritere.Ticket.DescriptionCommentTicket != "" && pCritere.OldTicket.Projet.IdProjet != 101 &&
                pCritere.OldTicket.Projet.IdProjet != 107)
            {
                //jc - Déclaration des variables
                IssueCommentDto lCommentaire = new IssueCommentDto();

                //jc- on affecte les différentes valeurs au nouveau commentaire
                lCommentaire.Entity.Comment   = pCritere.Ticket.DescriptionCommentTicket;
                lCommentaire.Entity.ProjectId = pCritere.OldTicket.Projet.IdProjet;
                lCommentaire.Entity.IssueId   = (pCritere.OldTicket.IdTicket == 0) ? lNewTicket.Id : pCritere.OldTicket.IdTicket;
                lCommentaire.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCommentaire.Entity.Created   = System.DateTime.Now;
                lCommentaire.Entity.Fullname  = pCritere.User.Login;
                //jc- affectation de constantes
                lCommentaire.Entity.IsClosing  = false;
                lCommentaire.Entity.Visibility = 1;

                //jc- intégration du nouveau commentaire via l'API
                lServiceData.Item.IssueCommentCreate(lCommentaire.Entity);
            }

            #endregion

            #region PROJET

            if (pCritere.OldTicket.Projet != null)
            {
                //jc - Déclaration des variables
                CustomFieldDataDto lCustomFieldDataProjet = new CustomFieldDataDto();

                //jc- affectation des variables a la cause
                lCustomFieldDataProjet.Entity.Data      = pCritere.OldTicket.Projet.IdProjet.ToString();
                lCustomFieldDataProjet.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldDataProjet.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldDataProjet.Entity.IssueId   = lNewTicket.Entity.Id;
                //jc- affectation des constantes à la nouvelle cause
                lCustomFieldDataProjet.Entity.CustomFieldId = 102;
                lCustomFieldDataProjet.Entity.Created       = System.DateTime.Now;
                lCustomFieldDataProjet.Entity.Revised       = System.DateTime.Now;

                //jc- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldDataProjet.Entity);
            }

            #endregion

            #region RAISON

            if (pCritere.Ticket.Raison != null)
            {
                //jc - Déclaration des variables
                CustomFieldDataDto lCustomFieldDataRaison = new CustomFieldDataDto();

                //jc- affectation des variables a la cause
                lCustomFieldDataRaison.Entity.Data      = pCritere.Ticket.Raison.IdRaison.ToString();
                lCustomFieldDataRaison.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldDataRaison.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldDataRaison.Entity.IssueId   = lNewTicket.Entity.Id;
                //jc- affectation des constantes à la nouvelle raison
                lCustomFieldDataRaison.Entity.CustomFieldId = 103;
                lCustomFieldDataRaison.Entity.Created       = System.DateTime.Now;
                lCustomFieldDataRaison.Entity.Revised       = System.DateTime.Now;

                //jc- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldDataRaison.Entity);
            }

            #endregion

            #region PROJET CONCERNE

            //tbh- si le projet concerne n'est pas null alors on en créé un
            if (pCritere.Ticket.ProjetConcerne != null)
            {
                //tbh - Déclaration des variables
                CustomFieldDataDto lCustomFieldProject = new CustomFieldDataDto();

                //tbh- affectation des variables a la cause
                lCustomFieldProject.Entity.Data      = pCritere.Ticket.ProjetConcerne.CodeProjet.ToString();
                lCustomFieldProject.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldProject.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldProject.Entity.IssueId   = lNewTicket.Entity.Id;

                //tbh- affectation des constantes à la nouvelle raison
                lCustomFieldProject.Entity.CustomFieldId = 118;
                lCustomFieldProject.Entity.Created       = System.DateTime.Now;
                lCustomFieldProject.Entity.Revised       = System.DateTime.Now;

                //tbh- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldProject.Entity);
            }
            #endregion

            #region CODE AFFAIRE

            //tbh- si le code affaire n'est pas null alors on en créé un
            if (pCritere.Ticket.CodeAffaire != null)
            {
                //tbh - Déclaration des variables
                CustomFieldDataDto lCustomFieldCodeAff = new CustomFieldDataDto();

                //tbh- affectation des variables au code affaire
                lCustomFieldCodeAff.Entity.Data      = pCritere.Ticket.CodeAffaire.Code.ToString();
                lCustomFieldCodeAff.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldCodeAff.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldCodeAff.Entity.IssueId   = lNewTicket.Entity.Id;

                //tbh- affectation des constantes à la nouvelle raison
                if (pCritere.Ticket.Projet != null)
                {
                    switch (pCritere.Ticket.Projet.TemplateId)
                    {
                    case 18:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 39;
                        break;

                    case 26:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 112;
                        break;

                    case 17:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 123;
                        break;

                    case 21:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 126;
                        break;

                    case 23:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 125;
                        break;

                    case 22:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 124;
                        break;

                    default:
                        lCustomFieldCodeAff.Entity.CustomFieldId = 112;
                        break;
                    }
                }
                else
                {
                    lCustomFieldCodeAff.Entity.CustomFieldId = 112;
                }

                lCustomFieldCodeAff.Entity.Created = System.DateTime.Now;
                lCustomFieldCodeAff.Entity.Revised = System.DateTime.Now;

                //tbh- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldCodeAff.Entity);
            }

            #endregion

            #region CODE CONTRAT

            //jc- si le code contrat n'est pas null alors on en créait un
            if (pCritere.Ticket.CodeContrat != null)
            {
                //jc - Déclaration des variables
                CustomFieldDataDto lCustomFieldContrat = new CustomFieldDataDto();

                //jc- affectation des variables a la cause
                lCustomFieldContrat.Entity.Data      = pCritere.Ticket.CodeContrat.Code.ToString();
                lCustomFieldContrat.Entity.UserId    = Convert.ToInt32(pCritere.User.IdGemini);
                lCustomFieldContrat.Entity.ProjectId = lNewTicket.Entity.ProjectId;
                lCustomFieldContrat.Entity.IssueId   = lNewTicket.Entity.Id;
                //jc- affectation des constantes à la nouvelle raison
                lCustomFieldContrat.Entity.CustomFieldId = 124;
                lCustomFieldContrat.Entity.Created       = System.DateTime.Now;
                lCustomFieldContrat.Entity.Revised       = System.DateTime.Now;

                //jc- on enregistre la nouvelle cause
                lServiceData.Item.CustomFieldDataCreate(lCustomFieldContrat.Entity);
            }

            #endregion

            //jc- on retourne l'id du nouveau ticket crée
            return(lNewTicket.Id);
        }