Example #1
0
        public void FetchConstantChromosomes(int IDPerson)
        {
            ClsMeetingTable         objMeetingTable         = new ClsMeetingTable();
            ClsMeetingRequestPerson objMeetingRequestPerson = new ClsMeetingRequestPerson();
            Meeting    myMeeting;
            Chromosome myChromosome;

            foreach (DataRow dRow in objMeetingTable.GetDataTableAcceptedMeetingsOfWeekWithDetailsofCompanyAndCompanyPlaceAndMeetingRequestWithIDPerson(dateCurrentWeekStart, dateCurrentWeekEnd, IDPerson).Rows)
            {
                myMeeting           = new Meeting();
                myChromosome        = new Chromosome();
                myMeeting.IDMeeting = dRow["IDMeeting"].ToString().ToInt();
                myMeeting.IDPlace   = dRow["PlaceCompanyID"].ToString().ToInt();
                myMeeting.Duraion   = dRow["Duration"].ToString().ToInt();

                meetings.Add(myMeeting.IDMeeting, myMeeting);

                myChromosome.IDMeeting = myMeeting.IDMeeting;
                myChromosome.Fitness   = constraintMeetingsFitness;
                myChromosome.Slot      = new TimeSlot {
                    Start = (dRow["Day"].ToString().ToInt() * 48) + ((dRow["TimeFrom"].ToString().Split(':')[0].ToInt() - 8) * 4) + (dRow["TimeFrom"].ToString().Split(':')[1].ToInt() / 15), End = (dRow["Day"].ToString().ToInt() * 48) - 1 + ((dRow["TimeTo"].ToString().Split(':')[0].ToInt() - 8) * 4) + (dRow["TimeTo"].ToString().Split(':')[1].ToInt() / 15)
                };

                constantChromosomes.Add(myChromosome);
            }
        }
Example #2
0
        public bool[] calculateLimitation(int idMeeting)
        {
            ClsMeetingRequest       objMeetingRequest       = new ClsMeetingRequest();
            ClsMeetingRequestPerson objMeetingRequestPerson = new ClsMeetingRequestPerson();
            ClsLimitation           objLimitation           = new ClsLimitation();
            ClsMeetingTable         objMeetingTable         = new ClsMeetingTable();



            int idPlace = objMeetingRequest.SelectByIDMeeting(idMeeting).Rows[0]["PlaceCompanyID"].ToString().ToInt();


            bool[]    dropZoneMap          = Enumerable.Repeat <bool>(true, 288).ToArray();
            DataTable dTableMeetinngPerson = objMeetingRequestPerson.GetDataTableAllPersonByIDMeeetingRequest(idMeeting);
            DataTable dTableLimitation;
            DataTable dTableMeetingTable;
            int       daysOffset      = 0;
            int       hourOffsetStart = 0;
            int       minOffsetStart  = 0;
            int       hourOffsetEnd   = 0;
            int       minOffsetEnd    = 0;

            foreach (DataRow dRow in dTableMeetinngPerson.Rows)
            {
                dTableLimitation = objLimitation.GetDataTableLimitationByIDPersonInCurrentWeek(dateCurrentWeekStart, dateCurrentWeekEnd, int.Parse(dRow["NO"].ToString()), idPlace);
                foreach (DataRow dRowInner in dTableLimitation.Rows)
                {
                    daysOffset      = int.Parse(dRowInner["Day"].ToString());
                    daysOffset      = (daysOffset * 48);
                    hourOffsetStart = int.Parse(dRowInner["TimeFrom"].ToString().Split(':')[0]);
                    hourOffsetStart = hourOffsetStart - 8;
                    hourOffsetStart = hourOffsetStart * 4;
                    minOffsetStart  = int.Parse(dRowInner["TimeFrom"].ToString().Split(':')[1]);
                    switch (minOffsetStart)
                    {
                    case 0:
                        minOffsetStart = 0;
                        break;

                    case 15:
                        minOffsetStart = 1;
                        break;

                    case 30:
                        minOffsetStart = 2;
                        break;

                    case 45:
                        minOffsetStart = 3;
                        break;

                    default:
                        minOffsetStart = 0;
                        break;
                    }


                    hourOffsetEnd = int.Parse(dRowInner["TimeTo"].ToString().Split(':')[0]);
                    hourOffsetEnd = hourOffsetEnd - 8;
                    hourOffsetEnd = hourOffsetEnd * 4;
                    minOffsetEnd  = int.Parse(dRowInner["TimeTo"].ToString().Split(':')[1]) / 15;

                    for (int j = daysOffset + hourOffsetStart + minOffsetStart; j < daysOffset + hourOffsetEnd + minOffsetEnd; j++)
                    {
                        dropZoneMap[j] = false;
                    }
                }


                dTableMeetingTable = objMeetingTable.GetDataTableAcctepedMeetingOfThisWeek(dateCurrentWeekStart, dateCurrentWeekEnd, dRow["NO"].ToString().ToInt(), idMeeting);
                foreach (DataRow dRowInner in dTableMeetingTable.Rows)
                {
                    daysOffset      = int.Parse(dRowInner["Day"].ToString());
                    daysOffset      = (daysOffset * 48);
                    hourOffsetStart = int.Parse(dRowInner["TimeFrom"].ToString().Split(':')[0]);
                    hourOffsetStart = hourOffsetStart - 8;
                    hourOffsetStart = hourOffsetStart * 4;
                    minOffsetStart  = int.Parse(dRowInner["TimeFrom"].ToString().Split(':')[1]);
                    switch (minOffsetStart)
                    {
                    case 0:
                        minOffsetStart = 0;
                        break;

                    case 15:
                        minOffsetStart = 1;
                        break;

                    case 30:
                        minOffsetStart = 2;
                        break;

                    case 45:
                        minOffsetStart = 3;
                        break;

                    default:
                        minOffsetStart = 0;
                        break;
                    }


                    hourOffsetEnd = int.Parse(dRowInner["TimeTo"].ToString().Split(':')[0]);
                    hourOffsetEnd = hourOffsetEnd - 8;
                    hourOffsetEnd = hourOffsetEnd * 4;
                    minOffsetEnd  = int.Parse(dRowInner["TimeTo"].ToString().Split(':')[1]) / 15;

                    for (int j = daysOffset + hourOffsetStart + minOffsetStart; j < daysOffset + hourOffsetEnd + minOffsetEnd; j++)
                    {
                        dropZoneMap[j] = false;
                    }
                }
            }
            return(dropZoneMap);
        }