private string Print()
        {
            var print = new StringBuilder();


            var hamsters = HDCon.Hamsters.OrderBy(x => x.CageID); //hämtar ut alla hamstrar och sorterar dom efter vilken bur dom är i

            //lägger till column name
            print.Append($"{"CID",-7}{"EID",-10}{"Name",-15}\t{"Age",-10}\t{"Sex",-10}\t\t{"Owner",-30}   \t\t{"CheckedIn",-40}\t{"Exersiced",-40}" + Environment.NewLine + Environment.NewLine);

            foreach (var h in hamsters)   //loopar igenom alla hamstrar
            {
                string female = "Female"; //defualt värde
                string cageID = h.CageID.ToString();
                string ExID   = h.ExerciseAreaID.ToString();;
                if (!h.IsFemale) //kollar om det är en hane
                {
                    female = "Male";
                }
                if (h.CageID == null) //om den inte är i en bur
                {
                    cageID = "";
                }
                if (h.ExerciseAreaID == null) //om den inte är och tränar
                {
                    ExID = "";
                }

                //lägger till införmation om hamstern
                print.Append($"{cageID,-10}{ExID,-10}{h.Name,-15}\t{h.Age,-10}\t{female,-20}\t{h.Ownername,-25}   \t\t{h.CheckedInTime,-40}\t{h.LastExercise,-40}" + Environment.NewLine);
            }

            PrintEvent?.Invoke(this, new PrintEventArgs(print.ToString(), Date)); //invokar ett event som skriver ut vad som hänt detta tick
            return(print.ToString());                                             //retunerar stringbuildern som en string
        }
Esempio n. 2
0
 public void Print()
 {
     for (int i = 0; i < _numLastItem; i++)
     {
         Console.WriteLine($"{i}.{_strings[i].TimeInputed} - {_strings[i].TextInputed}");
         if (PrintEvent != null)
         {
             PrintEvent.Invoke(_strings[i], DateTime.Now);
         }
     }
 }
        private async void StartThreads(object sender, TickEventArgs e)                                               //async metod som anropas på varje tick
        {
            if (e.Date.TimeOfDay == TimeSpan.Parse("17:00:00"))                                                       //kollar om kl är 17, då är dagen över
            {
                e.IsPaused = true;                                                                                    //simuleringen pausas
                Date       = e.Date;                                                                                  //date sätts till datumet simuleringen är på

                var   checkOutTask = CheckOutHamstersForTheDay();                                                     //skapar en task som skickar hem hamstrarna för dagen
                await checkOutTask;                                                                                   //awaitar tasken

                PrintEvent?.Invoke(this, new PrintEventArgs(Print(), e.Date));                                        //invokar ett event som skriver ut vad som hänt detta tick
                ReportEvent?.Invoke(this, new ReportEventArgs(HDCon.Hamsters.ToList(), HDCon.ActivityLogs.ToList())); //invokar ett event som genererar och skriver ut rapport för dagen

                var logs = HDCon.ActivityLogs;
                HDCon.ActivityLogs.RemoveRange(logs);                                   //tömmer logs i databasen
                HDCon.SaveChanges();                                                    //sparar ändringar

                e.Date     = e.Date.AddHours(13.9);                                     //lägger till 13.9h på simuleringen för att starta en ny dag
                e.IsPaused = false;                                                     //startar simuleringen igen
            }
            else if (e.Date.Hour >= 7 & e.Date.TimeOfDay <= TimeSpan.Parse("17:00:00")) //om kl är mellan 07.00 och 17.00
            {
                Date = e.Date;                                                          //date sätts till datumet simuleringen är på

                if (e.Date.TimeOfDay == TimeSpan.Parse("07:00:00"))                     //om kl är 07.00
                {
                    var   addToCageTask = AddHamstersToCages();                         //skapar en task för att checka in hamstrarna för dagen, behöver endast göras en gång per dag
                    await addToCageTask;                                                //awaitar tasken
                }


                var retrieveFromExerciseTask = RetreiveHamstersFromExtersiceArea(); //skapar en task som plockar ut hamstrar från träningsområdet
                var addToExerciseTask        = AddHamstersToExerciseArea();         //skapar en task som lägger till hamstrar till träningsområdet

                await retrieveFromExerciseTask;                                     //awaitar tasken
                await addToExerciseTask;                                            //awaitar tasken
                PrintEvent?.Invoke(this, new PrintEventArgs(Print(), e.Date));      //invokar ett event som skriver ut vad som hänt detta tick
            }
        }
Esempio n. 4
0
 static void OnPrintEvent(object sender, PrintEventArgs e) => PrintEvent?.Invoke(sender, e);
 public virtual void OnPrintEvent()
 {
     PrintEvent?.Invoke();
 }
 public void FireEvent()
 {
     PrintEvent?.Invoke();
 }