IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Trouver la disponibilité pour un agenda


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut Trouver la disponibilité pour un agenda
    Bonjour à tous,

    Pour les besoins d'une gestion de planning, je dois trouver les horaires (créneaux) disponibles par opérateur pour un rendez-vous.
    La difficulté (enfin pour moi ^^) c'est qu'un rendez-vous peut durer plus ou moins longtemps que le créneau configuré.
    Sachant également qu'un rendez-vous doit toujours débuter en début de créneau.
    Donc, je ne peux, dans ce cas, placer un rdv que si le créneau est disponible et si le créneau suivant a suffisamment de minutes disponible pour combler le manque.

    Puisqu'un dessin vaut mieux qu'un long discours, voici un exemple de résultat obtenu en croisant la durée de RDV par date et par opérateur avec le planning de chaque opérateur :

    DATE -- OPE -- DUREERDV -- DEBCRENEAU -- FINCRENEAU
    2018-05-14 -- 1 -- 45 -- 08:00:00.0000000 -- 08:30:00.0000000
    2018-05-14 -- 1 -- 45 -- 09:00:00.0000000 -- 09:30:00.0000000
    2018-05-14 -- 1 -- 45 -- 09:30:00.0000000 -- 09:40:00.0000000
    2018-05-14 -- 1 -- 45 -- 10:00:00.0000000 -- 10:30:00.0000000
    2018-05-14 -- 1 -- 45 -- 11:30:00.0000000 -- 12:00:00.0000000
    2018-05-14 -- 1 -- 45 -- 14:00:00.0000000 -- 14:30:00.0000000
    2018-05-14 -- 1 -- 45 -- 14:30:00.0000000 -- 15:00:00.0000000
    2018-05-14 -- 1 -- 45 -- 15:00:00.0000000 -- 15:30:00.0000000
    2018-05-14 -- 1 -- 45 -- 16:30:00.0000000 -- 17:00:00.0000000
    2018-05-14 -- 1 -- 45 -- 17:00:00.0000000 -- 17:30:00.0000000
    2018-05-14 -- 2 -- 45 -- 08:15:00.0000000 -- 08:45:00.0000000
    2018-05-14 -- 2 -- 45 -- 08:45:00.0000000 -- 09:00:00.0000000
    2018-05-14 -- 2 -- 45 -- 09:45:00.0000000 -- 10:15:00.0000000
    2018-05-14 -- 2 -- 45 -- 10:15:00.0000000 -- 10:30:00.0000000
    2018-05-14 -- 2 -- 45 -- 11:15:00.0000000 -- 11:45:00.0000000
    2018-05-14 -- 2 -- 45 -- 11:45:00.0000000 -- 12:15:00.0000000
    2018-05-14 -- 2 -- 45 -- 14:15:00.0000000 -- 14:45:00.0000000
    2018-05-14 -- 2 -- 45 -- 14:45:00.0000000 -- 15:15:00.0000000
    2018-05-14 -- 2 -- 45 -- 15:15:00.0000000 -- 15:45:00.0000000
    2018-05-14 -- 2 -- 45 -- 15:45:00.0000000 -- 16:15:00.0000000
    2018-05-14 -- 2 -- 45 -- 16:15:00.0000000 -- 16:45:00.0000000
    2018-05-14 -- 2 -- 45 -- 16:45:00.0000000 -- 17:15:00.0000000

    Le résultat attendu est :
    - l'opérateur 1 à la possibilité de positionner le rdv à 14h, 14h30 ou 16h30
    - l'opérateur 2 à la possibilité de positionner le rdv à 11h15, 14h15, 14h45, 15h15, 15h45, 16h15 ou 16h45.

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de tse_jc
    Homme Profil pro
    Data Solutions
    Inscrit en
    Août 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Data Solutions
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 287
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Pour vous aider dans votre démarche il faudrait nous montrer la structure des tables sous-jacentes.

    a+

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Bonjour et merci de votre aide.

    Voici la structure des tables :

    RDV_OPERATEUR
    ID_RDV_OPERATEUR INT (autoincrément, clé primaire)
    ID_TYPE_RDV INT
    DATE_RDV DATE
    ID_OPERATEUR INT


    REF_TYPE_RDV
    ID_TYPE_RDV INT (clé primaire)
    LIB_TYPE_RDV VARCHAR(25)
    DUREE_RDV INT


    PLANNING_OPERATEUR
    ID_PLANNING INT (autoincrément, clé primaire)
    ID_OPERATEUR INT
    DATE_PLANNING DATE
    DEB_CRENEAU TIME
    FIN_CRENEAU TIME

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Bonjour à tous,

    Je sais que c'est pas bien de relancer, mais je suis bien en galère là

  5. #5
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Bonjour,

    de mon point de vue il manque une info dans le modèle de données.
    En ajoutant un flag occupé dans la table planning opérateur afin de déterminer les créneaux bloqués par un rendez-vous cela devrait permettre de faire une requête à partir de la date de rendez-vous et de la durée du rendez-vous sans trop s'embêter et mettre à jour ce flag quand le rendez-vous est confirmé.

    S'il n'est pas possible de toucher aux modèles de données, il faudra calculer à chaque fois les créneaux dispo et occupé via un recursion car je suppose qu'un rendez-vous pourrait durée plus d'1heures et donc occuper plusieurs créneaux non ?

    [EDIT]
    LE modèle de données ne permet pas de stocker l'heure retenu pour un rendez-vous, si on se fie aux types DATE dans la table RDV_OPERATEUR
    [/EDIT]

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Ah oui exact, j'ai oublié 2 champs dans la table RDV_OPERATEUR qui sont l'heure de debut (HDEBRDV) et de fin (HFINRDV) du RDV en type time.

    Et encore exact, un rdv peut durer 1h maximum, mais peut aussi durer 15 minutes !!

    Quant à modifier le modèle de données, j'y ai bien pensé, mais c'est pas possible.

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    J'ai bien du mal à comprendre le jeu d'essai fournit :

    Citation Envoyé par ldujard Voir le message
    - l'opérateur 1 à la possibilité de positionner le rdv à 14h, 14h30 ou 16h30
    Pourtant dans les données fournies, cet opérateur à des RDV sur ces horaires là...
    pouvez vous expliquer plus en détail le calcul ? ?

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Bonjour,

    Je vais essayer d'être plus clair dans ma définition.

    - Le but est d'être capable de proposer des disponibilités sur internet.
    - Chaque pôle doit définir 3 types de RDV (A,B et C) et une durée pour chaque type. 15 minutes minimum et 60 au max. Les RDV peuvent avoir tous la même durée ou être tous différents, c'est à chaque pôle de s'organiser comme il le souhaite.
    - Les RDV de types A représentent plus de 80% du planning, donc on a choisit (on nous a un peu forcé la main aussi) de faire en sorte que ce qui serait proposé sur internet serait les horaires disponibles de la journée découpées en fonction de la durée des RDV de type A.

    Exemple concret :
    • Le pôle de Paris ouvre de 8h à 18h chaque jour.
    • Il a 2 opérateurs. Le 1er commence à 8h, le second à 8h15.
    • Il a définit ses types de RDV (A = 30 minutes, B = 20 minutes, C = 45 minutes).
    • Nous découpons donc la journée en créneau de 30 minutes et proposons les heures sur les quelles aucun rdv (quelque soit le type) n'est déjà posé.
    • Imaginons qu'un rdv de type B est déjà posé à 8h30 le lundi, un autre client souhaite prendre un RDV de type C (durée 45 minutes), je ne dois donc pas lui proposer les créneaux de 8h30 car il y a déjà un RDV dessus, mais je ne peux pas lui proposer celui de 8h, car son RDV se terminerait à 8h45 et serait à cheval avec le RDV de 8h30. Et comme le pôle ferme ses portes à 18h, je ne dois pas proposer lui proposer l'horaire de 17h30, car son rdv irait au delà de l'heure de fermeture.


    Le jeu de résultat du 1er post représente en faites les disponibilités et pas les RDV de chaque opérateur.
    C'est en faites la représentation de la table PLANNING_OPERATEUR sans les RDV déjà posés.

    Voilà, j'espère que c'est plus clair maintenant

Discussions similaires

  1. [Traitement d'image] Où trouver des images pour illustrer mon site ?
    Par langela94 dans le forum Webdesign & Ergonomie
    Réponses: 4
    Dernier message: 24/01/2006, 18h44
  2. Où trouver un environnement pour faire du PROLOG ?
    Par cladsam dans le forum Prolog
    Réponses: 4
    Dernier message: 04/05/2005, 18h12
  3. Ou trouver des tut pour Dx9 en c#?
    Par sen dans le forum DirectX
    Réponses: 3
    Dernier message: 24/02/2004, 15h44
  4. [Kylix] Trouver des composants pour Kylix 3
    Par busy999 dans le forum EDI
    Réponses: 2
    Dernier message: 17/02/2003, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo