Warning : This page has been marked as an archive because the author consider that its content is no longer relevant.

Dans le précédent article je vous parlais de la manière de créer un contact. Sur cette même lancée je vais vous parler de la manière de créer une tâche.

A ceux qui liraient cet article avant d’avoir lu les autres. Je tiens à informer que je me base sur les articles précédemment écris pour rédiger celui-ci. Si vous ne comprenez pas une partie de ce que vous allez lire ci-après pensez à vérifier que la réponse à votre question de se trouve pas dans de précédent articles.

Afin de faciliter la réutilisabilité du code de démonstration je vais introduire une méthode toute simple dont le but est d’insérer des ItemType (c’est à dire les contacts, les tâches, les éléments du calendrier …) dans Exchange. Cette méthode n’est qu’une réadaptation de ce que j’ai déjà présenté dans les articles précédents.

private static void CreateItem(
    ExchangeServiceBinding esb,
    TargetFolderIdType folder,
    ItemType[] newItems)
{
    var items = new NonEmptyArrayOfAllItemsType();
    items.Items = newItems;

    var cit = new CreateItemType()
    {
        SavedItemFolderId = folder,
        Items = items
    };

    CreateItemResponseType response = esb.CreateItem(cit);

    for (int i = 0; i < response.ResponseMessages.Items.Length; i++)
    {
        var ri = response.ResponseMessages.Items[i];
        // Faire quelquechose avec la réponse.
    }
}

Nous allons maintenant écrire une méthode pour créer spécifiquement une tâche. Rien de nouveau de ce côté non plus mis à par la classe TaskType représentant une tâche et le chemin pointant vers tasks à la place de contacts.

private static void CreateTask(ExchangeServiceBinding esb, TaskType task)
{
    var folder = new TargetFolderIdType
    {
        Item = new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.tasks }
    };

    CreateItem(esb, folder, new ItemType[] { task });
}

Passons maintenant à la création d’un objet TaskType contenant les diverses informations que nous souhaitons renseigner. Le code est commenté de façon à expliquer ce que vont faire les instructions qui suivent.

private static TaskType GetTestTask()
{
    TaskType task = new TaskType();

    task.Subject = "Un petit article";

    // Corps du message associé à la tâche
    task.Body = new BodyType
    {
        BodyType1 = BodyTypeType.Text,
        Value = "Ecrire un article pour le blog"
    };

    // Liste des catégories auxquelles appartient la tâche.
    task.Categories = new string[] { "Blog", "Article", "42" };

    // Degré d'importance de la tâche – Important
    task.ImportanceSpecified = true;
    task.Importance = ImportanceChoicesType.High;

    // Statut de la tâche – En cours
    task.StatusSpecified = true;
    task.Status = TaskStatusType.InProgress;

    // Achèvement de la tâche – 42%
    task.PercentCompleteSpecified = true;
    task.PercentComplete = 42.0d;

    // Date de début - Sept jours auparavant.
    task.StartDateSpecified = true;
    task.StartDate = DateTime.Now.Date.AddDays(-7.0d);

    // Date de rendu - Dans exactement deux ans.
    task.DueDateSpecified = true;
    task.DueDate = DateTime.Now.Date.AddYears(2);

    // Configuration de la récurrence de la tâche
    task.Recurrence = new TaskRecurrenceType
    {
        // On répète la tâche tout les mercredis toute les sept semaines
        Item = new WeeklyRecurrencePatternType
        {
            DaysOfWeek = Enum.GetName(typeof(DayOfWeek), DayOfWeek.Wednesday),
            Interval = 7
        },

        // Et cela indéfiniment à partir d’aujourd'hui
        Item1 = new NoEndRecurrenceRangeType
        {
            StartDate = DateTime.Now.Date
        }
    };

    return task;
}

Vous remarquerez les présence de propriété dont le nom est de la forme [Property]Specified. Cette propriété est présente en couple avec une propriété de type valeur. C’est une façon de ne pas utiliser le type générique Nullable. Chaque fois que vous souhaiterez renseigner une propriété non obligatoire et de type valeur vous devrez affecter la valeur True à [Property]Specified.

Maintenant que nous avons créé toutes les méthodes nécessaire à la création d’une tâche il ne reste plus qu’a les utiliser et à regarder le résultat de l’opération.

var esb = GetExchangeServiceBinding();
var task = GetTestTask();
CreateTask(esb, task);

TaskCreationResult

La prochain article parle de la création d’une réunion ou d’un rendez-vous et est visible ici.

Comments