public void CreateMultipleAgendas()
        {
            Console.WriteLine("**************************  CreateMultipleAgendas ***************************** ");
            var myAgenda = new AgendaClass {
                AgendaColor = Color.Green, Id = 1, Name = "My Agenda", NumberOfFiles = 25
            };
            AgendaClass copyAgenda = myAgenda;

            SetBlackAgenda(myAgenda);
            AgendaClass anotherAgenda = copyAgenda;

            Console.WriteLine("~~~  First display ~~~ ");

            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");
            Console.WriteLine($" Agenda Copy 2: Id = {copyAgenda.Id}, AgendaColor = {copyAgenda.AgendaColor}, Name = {copyAgenda.Name}, NumberOfFiles = {copyAgenda.NumberOfFiles} ");
            Console.WriteLine($" AnotherAgenda: Id = {anotherAgenda.Id}, AgendaColor = {anotherAgenda.AgendaColor}, Name = {anotherAgenda.Name}, NumberOfFiles = {anotherAgenda.NumberOfFiles} ");

            anotherAgenda = SetBlueAgenda(anotherAgenda);
            AgendaClass lastAgenda = SetBlueAgenda(copyAgenda);

            Console.WriteLine("~~~  Last display ~~~ ");

            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");
            Console.WriteLine($" Agenda Copy 2: Id = {copyAgenda.Id}, AgendaColor = {copyAgenda.AgendaColor}, Name = {copyAgenda.Name}, NumberOfFiles = {copyAgenda.NumberOfFiles} ");
            Console.WriteLine($" AnotherAgenda: Id = {anotherAgenda.Id}, AgendaColor = {anotherAgenda.AgendaColor}, Name = {anotherAgenda.Name}, NumberOfFiles = {anotherAgenda.NumberOfFiles} ");
            Console.WriteLine($" Last Agenda: Id = {lastAgenda.Id}, AgendaColor = {lastAgenda.AgendaColor}, Name = {lastAgenda.Name}, NumberOfFiles = {lastAgenda.NumberOfFiles} ");
        }
        public void CreateAgendaAndUpdateItAfterWithChangingReference()
        {
            Console.WriteLine("**************************  CreateAgendaAndUpdateItAfter ***************************** ");

            var myAgenda = new AgendaClass {
                AgendaColor = Color.Green, Id = 1, Name = "My Agenda", NumberOfFiles = 25
            };

            Console.WriteLine("~~~  Initial Value  ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            SetBlackAgenda(myAgenda);
            Console.WriteLine("~~~  Set Black Agenda  1st time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            myAgenda = SetBlueAgenda(myAgenda);
            Console.WriteLine("~~~  Set Blue Agenda 1st time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            SetYellowAgenda(myAgenda);
            Console.WriteLine("~~~  Set Yellow Agenda  1st time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            SetYellowAgenda(myAgenda);
            Console.WriteLine("~~~  Set Yellow Agenda  1st time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            SetCustomAgenda(myAgenda);
            Console.WriteLine("~~~  Set Custom Agenda 1st time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            myAgenda = SetCustomAgenda(myAgenda);
            Console.WriteLine("~~~  Set Custom Agenda 2nd time ~~~ ");
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");
        }
 private void SetBlackAgenda(AgendaClass agendaStructure)
 {
     agendaStructure.Id           += 2019;
     agendaStructure.AgendaColor   = Color.Black;
     agendaStructure.Name          = "BlackAgenda";
     agendaStructure.NumberOfFiles = 365;
 }
 private void SetYellowAgenda(AgendaClass agenda)
 {
     agenda               = new AgendaClass();
     agenda.Id            = 2019;
     agenda.AgendaColor   = Color.Yellow;
     agenda.Name          = "YellowAgenda";
     agenda.NumberOfFiles = 365;
 }
 private AgendaClass SetBlueAgenda(AgendaClass agenda)
 {
     agenda.Id           += 70;
     agenda.AgendaColor   = Color.Blue;
     agenda.Name          = "BlueAgenda";
     agenda.NumberOfFiles = 250;
     return(agenda);
 }
 private AgendaClass SetCustomAgenda(AgendaClass agenda)
 {
     agenda               = new AgendaClass();
     agenda.Id            = 34;
     agenda.AgendaColor   = Color.Brown;
     agenda.Name          = "Personal Agenda";
     agenda.NumberOfFiles = 770;
     return(agenda);
 }
        public void CustomReferenceTypeAssignation()
        {
            AgendaClass myAgenda = new AgendaClass {
                AgendaColor = Color.Blue, Id = 1, Name = "My Agenda", NumberOfFiles = 25
            };

            AgendaClass anotherAgenda = myAgenda;

            anotherAgenda.Id          = 12;
            anotherAgenda.AgendaColor = Color.Red;
            myAgenda.NumberOfFiles    = 100;

            Console.WriteLine($" AgendaStructure: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            Console.WriteLine($" AnotherAgenda: Id = {anotherAgenda.Id}, AgendaColor = {anotherAgenda.AgendaColor}, Name = {anotherAgenda.Name}, NumberOfFiles = {anotherAgenda.NumberOfFiles} ");
        }
        public void ComputeAgenda()
        {
            AgendaClass myAgenda = new AgendaClass {
                AgendaColor = Color.Blue, Id = 1, Name = "My Agenda", NumberOfFiles = 25
            };

            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            // 1. Create a method that will allow to update an agenda with following values
            // AgendaColor = Black, Name = Black Agenda, NumberOfFiles = 250, Id = {previousValue} * 1000 + {CurrentYear}

            // 2. update the object myAgenda created above using the method created at point 1.
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} ");

            // 3. Create a method that will allow to create a copy of an agenda reference.

            AgendaClass referenceAgenda = new AgendaClass();

            // 4. Ensure that the referenceAgenda is a copy of myAgenda by using the method created at point 3

            // 5. Create a method that will allow to create a copy of an agenda object with creating a new reference // Create a clone

            AgendaClass copyAgenda = new AgendaClass();

            // 6. Ensure that the copyAgenda is a copy of myAgenda by using the method created at point 5

            // 7. Please replace the [YOUR INPUT] from the bellow lines of code with what you think
            Console.WriteLine($" myAgenda == referenceAgenda is {myAgenda == referenceAgenda} and in my opinion is [YOUR INPUT]");
            Console.WriteLine($" myAgenda == copyAgenda is {myAgenda == copyAgenda} and in my opinion is [YOUR INPUT]");

            referenceAgenda.NumberOfFiles = 9000;

            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} and I say there are [YOUR INPUT] files");
            Console.WriteLine($" Reference Agenda: Id = {referenceAgenda.Id}, AgendaColor = {referenceAgenda.AgendaColor}, Name = {referenceAgenda.Name}, NumberOfFiles = {referenceAgenda.NumberOfFiles} and I say there are [YOUR INPUT] files");

            copyAgenda.NumberOfFiles = 1000000;
            Console.WriteLine($" My Agenda: Id = {myAgenda.Id}, AgendaColor = {myAgenda.AgendaColor}, Name = {myAgenda.Name}, NumberOfFiles = {myAgenda.NumberOfFiles} and I say there are [YOUR INPUT] files");
            Console.WriteLine($" Copy Agenda: Id = {copyAgenda.Id}, AgendaColor = {copyAgenda.AgendaColor}, Name = {copyAgenda.Name}, NumberOfFiles = {copyAgenda.NumberOfFiles} and I say there are [YOUR INPUT] files");

            // 8. In the AgendaExtension create a method that will test the equality of the object with a given agenda extension object.

            // I will be able to test that agendaExtension1 and agendaExtension2 are or not equal

            // 9. In the AgendaExtension create a method that will clone the current object. The clone must have a difference reference than the initial object.

            // I will be able to create a clone of an existing object like agendaExtension1

            AgendaExtension agendaExtension = new AgendaExtension {
                AgendaColor = Color.Blue, Id = 1, Name = "My Agenda", NumberOfFiles = 25, OwnerName = "My Name"
            };
            AgendaExtension agendaExtensionClone       = new AgendaExtension();
            AgendaExtension referenceOfAgendaExtension = agendaExtension;

            // 10. Ensure that the agendaExtensionClone is a clone of agendaExtension using the clone method defined at point 9.

            // 11. Please replace the [YOUR INPUT] from the bellow lines of code with what you think.
            Console.WriteLine($" agendaExtension == referenceOfAgendaExtension is {agendaExtension == referenceOfAgendaExtension} and in my opinion is [YOUR INPUT]");
            Console.WriteLine($" agendaExtensionClone == agendaExtensionClone is {agendaExtension == agendaExtensionClone} and in my opinion is [YOUR INPUT]");

            // replace the {agendaExtension == referenceOfAgendaExtension} with your equality method
            Console.WriteLine($" agendaExtension == referenceOfAgendaExtension is {agendaExtension == referenceOfAgendaExtension} and in my opinion is [YOUR INPUT]");
            // replace the {agendaExtension == agendaExtensionClone} with your equality method
            Console.WriteLine($" agendaExtensionClone == agendaExtensionClone is {agendaExtension == agendaExtensionClone} and in my opinion is [YOUR INPUT]");

            agendaExtension.OwnerName = "This is my agenda!!";

            Console.WriteLine($" agendaExtension == referenceOfAgendaExtension is {agendaExtension == referenceOfAgendaExtension} and in my opinion is [YOUR INPUT]");
            Console.WriteLine($" agendaExtensionClone == agendaExtensionClone is {agendaExtension == agendaExtensionClone} and in my opinion is [YOUR INPUT]");

            // replace the {agendaExtension == referenceOfAgendaExtension} with your equality method
            Console.WriteLine($" agendaExtension == referenceOfAgendaExtension is {agendaExtension == referenceOfAgendaExtension} and in my opinion is [YOUR INPUT]");
            // replace the {agendaExtension == agendaExtensionClone} with your equality method
            Console.WriteLine($" agendaExtensionClone == agendaExtensionClone is {agendaExtension == agendaExtensionClone} and in my opinion is [YOUR INPUT]");
        }