示例#1
0
        //Id des blocs en mémoires
        public GrilleHoraire(Graphics grfx, Loader loader, DateTime date)
        {
            gfx = grfx;
            this.loader = loader;
            //DateTime renvoyer par la fonction getweekrange()
            laDate = date;

            //DateTime et une addition de timespan
            DateTime lundi = laDate;
            DateTime mardi = laDate.Add(new TimeSpan(24, 0, 0));
            DateTime mercredi = laDate.Add(new TimeSpan(48, 0, 0));
            DateTime jeudi = laDate.Add(new TimeSpan(72, 0, 0));
            DateTime vendredi = laDate.Add(new TimeSpan(96, 0, 0));
            DateTime samedi = laDate.Add(new TimeSpan(120, 0, 0));
            DateTime dimanche = laDate.Subtract(new TimeSpan(24, 0, 0));

            //Création des jours - ajouter les blocs existants
            jours[0] = new GrilleJour("Dimanche", dimanche, 1, 40, 20, grfx, loader, this);
            jours[1] = new GrilleJour("Lundi", lundi, 2, 140, 20, grfx, loader, this);
            jours[2] = new GrilleJour("Mardi", mardi, 3, 240, 20, grfx, loader, this);
            jours[3] = new GrilleJour("Mercredi", mercredi, 4, 340, 20, grfx, loader, this);
            jours[4] = new GrilleJour("Jeudi", jeudi, 5, 440, 20, grfx, loader, this);
            jours[5] = new GrilleJour("Vendredi", vendredi, 6, 540, 20, grfx, loader, this);
            jours[6] = new GrilleJour("Samedi", samedi, 7, 640, 20, grfx, loader, this);
        }
示例#2
0
        static void Main()
        {
            /* Loader loader = new Loader();

            loader.loadPoste();
            loader.LoadProfil();
            loader.LoadEquipe();
            loader.loadBloc();

            CreateXml.CreateProfileXml();
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new HoraireBeta(loader));*/

            Loader l = new Loader();

            l.loadPoste();
            l.LoadProfil();

            l.LoadEquipe();
            l.loadBloc();
            l.loadErreurs();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new HoraireBeta(l));

               // TabSchedule t = new TabSchedule();
            //t.generate(l.bloc, l.profilCharge);
        }
示例#3
0
 public HoraireBeta(Loader loader)
 {
     this.loader = loader;
     InitializeComponent();
     FillInterface();
     Graphics grfx = this.panelCentral_Horaire.CreateGraphics();
     grille = new GrilleHoraire(grfx, loader, getDebutSemaine());
 }
示例#4
0
        //Constructeur
        public GrilleJour(String jourText, DateTime laDate, int jour, int posx, int posy, Graphics grfx, Loader loader, GrilleHoraire grilleH)
        {
            this.jourText = jourText;
            this.jour = jour;
            dateDuJour = laDate;
            posX = posx;
            posY = posy;
            width = 100;
            height = 500;
            this.loader = loader;
            this.grfx = grfx;
            laGrille = grilleH;

            //Petit rectangle
            heightHeure = ((height - 20) / nbHeures);
        }
示例#5
0
        public int generate(List<Bloc> blocs, List<Ressource> employee)
        {
            int valide = 0;
            bool breakthefuck = false;

            for (int j = 0; j < employee.Count; j++)
            {
                //MessageBox.Show("Han? -4 : " + ((Profil)employee[j]).getHeuresMax() + " 2em Han :" + ((Profil)employee[j]).getHeuresTravaillees());
                if (((Profil)employee[j]).getHeuresMax() > ((Profil)employee[j]).getHeuresTravaillees())
                {
                    for (int i = 0; i < blocs.Count; i++)
                    {
                       // MessageBox.Show("Han? -3");
                        if (!blocs[i].checkCompletion())
                        {
                            Console.WriteLine(blocs[i].getId() + " " + blocs[i].getDebut() + " " + blocs[i].getFin());

                            for (int k = 0; k < ((Profil)employee.ElementAt(j)).getPref().Count; k++)
                            {
                                Console.WriteLine("       " + ((Profil)employee[j]).getNom() + " " + (((Profil)employee[j]).getPref()[k].getDebut()) + " " + (((Profil)employee[j]).getPref()[k].getFin()) + " " + ((Profil)employee[j]).getHeuresMax() + " " + ((Profil)employee[j]).getHeuresTravaillees() + " ");
                                //MessageBox.Show("Han? -2");
                                //si l'heure de début et avant le début du bloc, et l'heure de fin est après la fin du bloc, et le jour de la semaine est le même et que l'employé n'as pas dépassé son quota d'heure
                                if (Convert.ToInt32(((Profil)employee[j]).getPref()[k].getDebut().ToString("HHmm")) <= Convert.ToInt32(blocs[i].getDebut().ToString("HHmm")) && Convert.ToInt32(((Profil)employee[j]).getPref()[k].getFin().ToString("HHmm")) >= Convert.ToInt32(blocs[i].getFin().ToString("HHmm")) && ((Profil)employee[j]).getHeuresMax() > ((Profil)employee[j]).getHeuresTravaillees() && ((Profil)employee[j]).getPref()[k].getDebut().DayOfWeek.Equals(blocs[i].getDebut().DayOfWeek) && !blocs[i].estDejaPresent(employee[j]))
                                {
                                    for (int l = 0; l < ((Profil)employee[j]).getPoste().Count; l++)
                                    {

                                        //MessageBox.Show("Han? -1");
                                        if (blocs[i].estVoulue(((Profil)employee[j]).getPoste(l)) && !blocs[i].estDejaPresent(employee[j]))
                                        {
                                            blocs[i].addRessource(((Profil)employee[j]), ((Profil)employee[j]).getPoste(l));
                                            //MessageBox.Show("han?");
                                            //pour sortir des boucles useless;
                                            l = ((Profil)employee[j]).getPoste().Count;
                                            k = ((Profil)employee.ElementAt(j)).getPref().Count;
                                            if (((Profil)employee[j]).getHeuresMax() > ((Profil)employee[j]).getHeuresTravaillees())
                                                i = blocs.Count;

                                        }
                                        coun++;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            for (int j = 0; j < employee.Count; j++)
            {
                if (((Profil)employee[j]).getHeuresMax() > ((Profil)employee[j]).getHeuresTravaillees())
                {
                    for (int i = 0; i < blocs.Count; i++)
                    {
                        if (!blocs[i].checkCompletion())
                        {
                            Console.WriteLine(blocs[i].getId() + " " + blocs[i].getDebut() + " " + blocs[i].getFin());

                            for (int k = 0; k < ((Profil)employee.ElementAt(j)).getDispo().Count; k++)
                            {
                                //si l'heure de début et avant le début du bloc, et l'heure de fin est après la fin du bloc, et le jour de la semaine est le même et que l'employé n'as pas dépassé son quota d'heure

                                if (Convert.ToInt32(((Profil)employee[j]).getDispo()[k].getDebut().ToString("HHmm")) <= Convert.ToInt32(blocs[i].getDebut().ToString("HHmm")) && Convert.ToInt32(((Profil)employee[j]).getDispo()[k].getFin().ToString("HHmm")) >= Convert.ToInt32(blocs[i].getFin().ToString("HHmm")) && ((Profil)employee[j]).getHeuresMax() > ((Profil)employee[j]).getHeuresTravaillees() && ((Profil)employee[j]).getDispo()[k].getDebut().DayOfWeek.Equals(blocs[i].getDebut().DayOfWeek) && !blocs[i].estDejaPresent(employee[j]))
                                {
                                    for (int l = 0; l < ((Profil)employee[j]).getPoste().Count; l++)
                                    {

                                        Console.WriteLine("       " + ((Profil)employee[j]).getNom() + " " + (((Profil)employee[j]).getDispo()[k].getDebut()) + " " + (((Profil)employee[j]).getDispo()[k].getFin()) + " " + ((Profil)employee[j]).getHeuresMax() + " " + ((Profil)employee[j]).getHeuresTravaillees() + " ");
                                        if (blocs[i].estVoulue(((Profil)employee[j]).getPoste(l)) && !blocs[i].estDejaPresent(employee[j]))
                                        {
                                            blocs[i].addRessource(((Profil)employee[j]), ((Profil)employee[j]).getPoste(l));
                                            MessageBox.Show("han?");
                                            //pour sortir des boucles useless;
                                            l = ((Profil)employee[j]).getPoste().Count;
                                            k = ((Profil)employee.ElementAt(j)).getDispo().Count;

                                        }
                                        coun++;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            for (int i = 0; i < blocs.Count; i++)
            {
                if (!(blocs[i].checkCompletion()) && l.erreur.Count > 1)
                {

                    l.returnErreur(1);

                }
                coun++;
            }

            for (int i = 0; i < blocs.Count; i++)
            {
                for (int j = 0; j < blocs[i].getRessourceVoulus().Count; j++)
                {

                    if (blocs[i].getRessourceVoulus(j).nbAffectee == 0 && l.erreur.Count > 2)
                    {

                        l.returnErreur(2);

                    }
                    coun++;
                }
            }
            foreach (Bloc bloc in blocs)
            {
                bloc.save();
            }

            MessageBox.Show(coun+"");
            return valide;
        }