public SpectacledayViewModel(Spectacleday spectacleday, IBusinessLogic bl, IBusinessLogicAsync blAsync) {
			this.spectacleDay = spectacleday;
			this.blAsync = blAsync;
			this.bl = bl;

			Areas = new ObservableCollection<ScheduleAreaViewModel>();
		}
        public void SetUp()
        {
            transaction = new TransactionScope();
            DALFactory factory = DALFactory.GetInstance();
            db = factory.CreateDatabase();
            dao = factory.CreateSpectacledayDAO(db);
            spectacleday1 = new Spectacleday {
                Id = 1,
                Day = new DateTime(1985, 11, 13)
            };

            spectacleday2 = new Spectacleday {
                Id = 2,
                Day = new DateTime(2015, 12, 15)
            };

            runDbCommands(db, new List<string> {
                "SET FOREIGN_KEY_CHECKS=0",
                "DELETE FROM `spectacleday`",
                "INSERT INTO `spectacleday` VALUES (1, '1985-11-13')",
                "INSERT INTO `spectacleday` VALUES (2, '2015-12-15')",
                "DELETE FROM `spectacleday_timeslot`",
                $"INSERT INTO `spectacleday_timeslot` VALUES (1, 1, 1)",
                $"INSERT INTO `spectacleday_timeslot` VALUES (2, 1, 2)"
            });
        }
 public IEnumerable<SpectacledayTimeSlot> GetForSpectacleDay(Spectacleday spectacleDay)
 {
     var result = new List<SpectacledayTimeSlot>();
     var cmd = CreateSelectForSpectacleDayCommand(spectacleDay);
     using (IDataReader reader = db.ExecuteReader(cmd)) {
         while (reader.Read()) {
             result.Add(CreateSpectacleTimeslotFromReader(reader));
         }
     }
     return result;
 }
Exemple #4
0
 public void MailToArtists(IEnumerable<Artist> artists, Spectacleday day, byte[] file)
 {
     using (SmtpClient smtpClientt = new SmtpClient(smtpServer, port))
     using (MailMessage mailMessage = new MailMessage()) {
         try {
             artists.ToList().Where(artist => artist.Email != null).ToList().ForEach(artist => mailMessage.To.Add(artist.Email));
             if (mailMessage.To.Count() <= 0) return;
             mailMessage.Body = CreateBody(day);
             mailMessage.From = mailAddress;
             Stream stream = new MemoryStream(file);
             Attachment attachment = new Attachment(stream, "Schedule.pdf");
             mailMessage.Attachments.Add(attachment);
             smtpClientt.UseDefaultCredentials = false;
             smtpClientt.Credentials = new NetworkCredential(user, pwd);
             smtpClientt.Send(mailMessage);
         } catch (Exception e) {
             throw new BusinessLogicException("Mailt to Artists failed. " + e.Message);
         }
     }
 }
 private DbCommand CreateSelectForSpectacleDayCommand(Spectacleday spectacleDay)
 {
     var cmd = db.CreateCommand(SQL_SELECT_FOR_SPECTACLEDAY);
     db.DefineParameter(cmd, "@SpectacleDayId", DbType.Int32, spectacleDay.Id);
     return cmd;
 }
Exemple #6
0
 public abstract byte[] CreatePdfScheduleForSpectacleDay(Spectacleday spectacleDay);
Exemple #7
0
 public abstract void UpdatePerformances(Spectacleday spectacleDay, IEnumerable<Performance> performances);
Exemple #8
0
 public abstract IEnumerable<SpectacledayTimeSlot> GetSpectacleDayTimeSlotsForSpectacleDay(Spectacleday day);
Exemple #9
0
 public List<Performance> GetPerformanesForSpetacleDay(Spectacleday day)
 {
     return bl.GetPerformanesForSpetacleDay(day).ToList();
 }
Exemple #10
0
 public IEnumerable<Performance> GetForSpectacleDay(Spectacleday spectacleDay)
 {
     var result = new List<Performance>();
     var cmd = CreateSelectForSpectacleDay(spectacleDay.Id);
     using (IDataReader reader = db.ExecuteReader(cmd)) {
         while (reader.Read()) {
             result.Add(CreatePerformanceFromReader(reader));
         }
         return result;
     }
 }
Exemple #11
0
 public override byte[] CreatePdfScheduleForSpectacleDay(Spectacleday spectacleDay)
 {
     return pdf.MakeSpectacleSchedule(GetSpectacleDayTimeSlotsForSpectacleDay(spectacleDay), GetPerformanesForSpetacleDay(spectacleDay), GetAreas(), GetVenues(), GetTimeSlots(), GetArtists());
 }
Exemple #12
0
        public override void UpdatePerformances(Spectacleday spectacleDay, IEnumerable<Performance> performances)
        {
            var tmp = performances.Where(p => p.Id != default(int) || p.ArtistId != default(int));
            performances = tmp;
            if (performances.Count() <= 0) return;
            var oldPerformances = dalFactory.CreatePerformanceDAO(db).GetForSpectacleDay(spectacleDay);
            var performancesToDelete = performances.Where(p => p.ArtistId == default(int));
            var performancesToCreate = performances.Where(p => p.Id == default(int));
            var performancesToUpdate = performances.Where(p => p.Id != default(int) && p.ArtistId != default(int));
            var tmpPerformances = MergePerformances(oldPerformances, performancesToDelete, performancesToCreate, performancesToUpdate);

            var valid = ValidateArtist(tmpPerformances);
            if (valid != null) throw new BusinessLogicException($"Artist {dalFactory.CreateArtistDAO(db).GetById(valid.ArtistId).Name} has already a performance scheduled.");
            valid = ValidateVenue(tmpPerformances);
            if (valid != null) throw new BusinessLogicException($"Venue {dalFactory.CreateArtistDAO(db).GetById(valid.ArtistId).Name} already scheduled.");
            valid = ValidatePause(tmpPerformances);
            if (valid != null) throw new BusinessLogicException($"Artist {dalFactory.CreateArtistDAO(db).GetById(valid.ArtistId).Name} has no time for a pause.");

            Update(performancesToDelete, performancesToCreate, performancesToUpdate);
            var artists = GetArtistsToNotify(oldPerformances, performancesToDelete, performancesToCreate, performancesToUpdate);
            MailPerformanceChangesToArtists(artists, performances, spectacleDay);
            performancesToDelete.ToList().ForEach(p => p.Id = default(int));
        }
Exemple #13
0
 public void MailPerformanceChangesToArtists(IEnumerable<Artist> artists, IEnumerable<Performance> performances, Spectacleday day)
 {
     var file = CreatePdfScheduleForSpectacleDay(day);
     ms.MailToArtists(artists, day, file);
 }
Exemple #14
0
 public override IEnumerable<SpectacledayTimeSlot> GetSpectacleDayTimeSlotsForSpectacleDay(Spectacleday day)
 {
     var spectacleTS = dalFactory.CreateSpectacledayTimeSlotDAO(db).GetForSpectacleDay(day);
     var timeSlots = dalFactory.CreateTimeSlotDAO(db).GetAll();
     foreach (var ts in spectacleTS) {
         ts.TimeSlot = timeSlots.Where(x => x.Id == ts.TimeSlotId).First();
     }
     return spectacleTS;
 }
Exemple #15
0
 public override IEnumerable<Performance> GetPerformanesForSpetacleDay(Spectacleday day)
 {
     return dalFactory.CreatePerformanceDAO(db).GetForSpectacleDay(day);
 }
Exemple #16
0
 public abstract IEnumerable<Performance> GetPerformanesForSpetacleDay(Spectacleday day);
Exemple #17
0
 public Task<IEnumerable<Performance>> GetPerformanesForSpetacleDayAsync(Spectacleday day)
 {
     return Task.Run(() => GetPerformanesForSpetacleDay(day));
 }
Exemple #18
0
 public List<SpectacledayTimeSlot> GetSpectacleDayTimeSlotsForSpectacleDay(Spectacleday day)
 {
     return bl.GetSpectacleDayTimeSlotsForSpectacleDay(day).ToList();
 }
Exemple #19
0
 public Task<IEnumerable<SpectacledayTimeSlot>> GetSpectacleDayTimeSlotsForSpectacleDayAsync(Spectacleday day)
 {
     return Task.Run(() => GetSpectacleDayTimeSlotsForSpectacleDay(day));
 }
Exemple #20
0
 public void UpdatePerformances(Spectacleday spectacleDay, List<Performance> performances)
 {
     bl.UpdatePerformances(spectacleDay, performances);
 }
Exemple #21
0
 public void UpdatePerformancesAsync(Spectacleday spectacleDay, IEnumerable<Performance> performances)
 {
     Task.Run(() => UpdatePerformances(spectacleDay, performances));
 }
Exemple #22
0
 public byte[] CreatePdfScheduleForSpectacleDay(Spectacleday spectacleDay)
 {
     return bl.CreatePdfScheduleForSpectacleDay(spectacleDay);
 }
Exemple #23
0
 public Task<byte[]> CreatePdfScheduleForSpectacleDayAsync(Spectacleday spectacleDay)
 {
     return Task.Run(() => CreatePdfScheduleForSpectacleDay(spectacleDay));
 }
 public void SetUp()
 {
     spectacleday = new Spectacleday();
 }
Exemple #25
0
 private string CreateBody(Spectacleday day)
 {
     return $"The Schedule for {day.Day} has been changed.";
 }
 public static bool IsEqualTo(this Spectacleday s1, Spectacleday s2)
 {
     return s1.Id == s2.Id &&
         s1.Day == s2.Day;
 }