public static void OnDinnerModifiedTimeEvent(NerdDinnerDomainEvents.DinnerModifiedTimeEvent ev)
        {
            //Time is modified on this event...We need to generate the emails to send to all users
            //Those email are then sent to the external bus so the real email sender process can send
            using (EventStoreNhib.UnitOfWork uow = new EventStoreNhib.UnitOfWork(DB.GetFactory().OpenSession(), false))
            {
                EventStoreInfrastructure.IRepository<NerdDinnerDomain.Dinner> repDinners = uow.CreateRepository<NerdDinnerDomain.Dinner>();
                NerdDinnerDomain.Dinner oDinner = repDinners.GetById(ev.EntityId);
                string fromemail = "*****@*****.**";
                string fromname = "system info";

                //Send to organizer
                EventStoreInfrastructure.IRepository<NerdDinnerDomain.User> repUsers = uow.CreateRepository<NerdDinnerDomain.User>();
                NerdDinnerDomain.User oUser = repUsers.GetById( oDinner.Organizer_User_id );

                string toemail = oUser.Forname + "." + oUser.Surname + "@" + oUser.Surname.ToString() + ".com";
                string toname = oUser.Forname + " " + oUser.Surname;
                string message = "You have modified the time for dinner at " + oDinner.Location + " " + oDinner.Date.ToString();
                MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemail, ToName = toname, Header = "Your dinner has changed", Message = message });

                foreach (Guid userid in oDinner.Participants)
                {
                    oUser = repUsers.GetById(userid);
                    toemail = oUser.Forname + "." + oUser.Surname + "@" + oUser.Surname.ToString() + ".com";
                    toname = oUser.Forname + " " + oUser.Surname;
                    message = "New dinner time at " + oDinner.Location + " " + oDinner.Date.ToString();
                    MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemail, ToName = toname, Header = "Dinner time has changed", Message = message });
                }

            }
        }
        public static void OnDinnerAddedParticipantEvent(NerdDinnerDomainEvents.DinnerAddedParticipantEvent ev)
        {
            //Send email to that user - and to organizer
            using (EventStoreNhib.UnitOfWork uow = new EventStoreNhib.UnitOfWork(DB.GetFactory().OpenSession(), false))
            {
                EventStoreInfrastructure.IRepository<NerdDinnerDomain.Dinner> repDinners = uow.CreateRepository<NerdDinnerDomain.Dinner>();
                NerdDinnerDomain.Dinner oDinner = repDinners.GetById(ev.EntityId);
                string fromemail = "*****@*****.**";
                string fromname = "system info";

                //Send to organizer
                EventStoreInfrastructure.IRepository<NerdDinnerDomain.User> repUsers = uow.CreateRepository<NerdDinnerDomain.User>();
                NerdDinnerDomain.User oUserOrg = repUsers.GetById(oDinner.Organizer_User_id);
                NerdDinnerDomain.User oUser = repUsers.GetById(ev.User_id);

                string toemail = oUserOrg.Forname + "." + oUserOrg.Surname + "@" + oUserOrg.Surname.ToString() + ".com";
                string toname = oUserOrg.Forname + " " + oUserOrg.Surname;
                string message =  oUser.Forname + " " + oUser.Surname + " is coming to your dinner at " + oDinner.Location + " " + oDinner.Date.ToString();
                MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemail, ToName = toname, Header = "Someone is coming to your dinner", Message = message });

                toemail = oUser.Forname + "." + oUser.Surname + "@" + oUser.Surname.ToString() + ".com";
                toname = oUser.Forname + " " + oUser.Surname;
                message = "You have registered for dinner at " + oDinner.Location + " " + oDinner.Date.ToString();
                MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemail, ToName = toname, Header = "Dinner registration", Message = message });

            }
        }
        public void OnUserCreatedEvent(NerdDinnerDomainEvents.UserCreatedEvent ev)
        {
            //When a new user has been created THIS should happen
            string s1 = "USER " + ev.EntityId.ToString() + " was created " + ev.Forname + " " + ev.Surname;

            using (TextWriter w = System.IO.File.AppendText("UserCreatedEvent-domainevents.txt"))
            {
                w.WriteLine(DateTime.Now.ToString() + " " + s1);
            }
        }
 private void onUserChangedNameEvent(NerdDinnerDomainEvents.UserChangedNameEvent oUserChangedNameEvent)
 {
     Forname = oUserChangedNameEvent.Forname;
     Surname = oUserChangedNameEvent.Surname;
 }
 private void onUserCreatedEvent(NerdDinnerDomainEvents.UserCreatedEvent oUserCreatedEvent)
 {
     Id = oUserCreatedEvent.EntityId;
     Forname = oUserCreatedEvent.Forname;
     Surname = oUserCreatedEvent.Surname;
     Joined = oUserCreatedEvent.Joined;
 }
 private void onDinnerRemovedParticipantEvent(NerdDinnerDomainEvents.DinnerRemovedParticipantEvent ev)
 {
     if (Participants.Contains(ev.User_id))
         Participants.Remove(ev.User_id);
 }
 private void onDinnerModifiedTimeEvent(NerdDinnerDomainEvents.DinnerModifiedTimeEvent oDinnerModifiedTimeEvent)
 {
     Date = oDinnerModifiedTimeEvent.Date;
 }
 private void onDinnerModifiedLocationEvent(NerdDinnerDomainEvents.DinnerModifiedLocationEvent ev)
 {
     Location = ev.Location;
 }
 private void onDinnerModifiedDescriptionEvent(NerdDinnerDomainEvents.DinnerModifiedDescriptionEvent ev)
 {
     Description = ev.Description;
 }
 private void onDinnerCreatedEvent(NerdDinnerDomainEvents.DinnerCreatedEvent oUserCreatedEvent)
 {
     Id = oUserCreatedEvent.EntityId;
     Date = oUserCreatedEvent.Date;
     Location = oUserCreatedEvent.Location;
     Description = oUserCreatedEvent.Description;
     Organizer_User_id = oUserCreatedEvent.Organizer_User_id;
 }
 private void onDinnerAddedParticipantEvent(NerdDinnerDomainEvents.DinnerAddedParticipantEvent ev)
 {
     if (!Participants.Contains(ev.User_id))
         Participants.Add(ev.User_id);
 }
        public static void OnUserOptedInForDinnerEvent(NerdDinnerDomainEvents.UserOptedInForDinnerEvent ev)
        {
            #if(false)
            string fromemail = "*****@*****.**";
            string fromname = "system info";
            using (Systementor.Database.Repositories.IUnitOfWork uow = DB.DataContext.CreateUnitOfWork(false))
            {
                Systementor.Database.Repositories.IRepository<NerdDinnerDomain.User> rep = uow.CreateRepository<NerdDinnerDomain.User>();
                Systementor.Database.Repositories.IRepository<NerdDinnerDomain.Dinner> repDinner = uow.CreateRepository<NerdDinnerDomain.Dinner>();
                NerdDinnerDomain.Dinner oDinner = repDinner.Get(p => p.Id == args.DinnerId);

                NerdDinnerDomain.User oUser = rep.Get(p => p.Id == args.User_Id_Opted_In);
                NerdDinnerDomain.User o = rep.Get(p => p.Id == args.User_Id_Opted_In);
                if (args.Owner_User_id != args.User_Id_Opted_In)
                {
                    string toemail = oUser.Forname + "." + oUser.Surname + "@" + args.Owner_User_id.ToString() + ".com";
                    string toname = oUser.Forname + " " + oUser.Surname;
                    string message = "You have registered for dinner at " + oDinner.Location + " " + oDinner.Date.ToString();
                    MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemail, ToName = toname, Header = "You opted in for a dinner", Message=message });
                }
                //Message to owner
                NerdDinnerDomain.User oUserOwner = rep.Get(p => p.Id == args.Owner_User_id);
                string toemailowner = oUserOwner.Forname + "." + oUserOwner.Surname + "@" + oUserOwner.Id.ToString() + ".com";
                string tonameowner = oUserOwner.Forname + " " + oUserOwner.Surname;
                string messageowner =  oUser.Forname + " " + oUser.Surname + " have registered for the dinner you are arranging at " + oDinner.Location + " " + oDinner.Date.ToString();
                MessageEndpoint.Bus.Send(new NerdCommandMessages.External.SendMail { MessageGuid = Guid.NewGuid(), FromEmail = fromemail, FromName = fromname, ToEmail = toemailowner, ToName = tonameowner, Header = "Someone coming to your dinner", Message = messageowner });

            }
            #endif
        }