public void Remove(TV_ProgramDTO Program) { string sql = string.Format("Delete from TVProgram where TVProgram.Id = {0}", Program.Id); SqliteCommand command = new SqliteCommand(sql, _connection); command.ExecuteNonQuery(); }
private void UpdateWrapPanel() { CardsWrapPanel.Children.Clear(); foreach (TV_ProgramDTO program in ItemsSource) { TV_Card tvCard = new TV_Card(program); tvCard.OnClick += SelectCard; tvCard.OnEdit += EditProgram; tvCard.OnDelete += DeleteProgram; if (!IsSourceCorrect(tvCard.TV_Image)) { tvCard.TV_Image.Source = new BitmapImage(new Uri("/Resources/nopicture.jpg", UriKind.Relative)); } CardsWrapPanel.Children.Add(tvCard); } if (ItemsSource.Count() > 0) { if (SelectedItem == null) { SelectedItem = ItemsSource[0]; } SelectItem(SelectedItem); } }
private void EditProgramMethod() { TV_ProgramDTO EditedProgram = new TV_ProgramDTO { Actors = SelectedProgram.Actors, AvatarSourcePath = SelectedProgram.AvatarSourcePath, Description = SelectedProgram.Description, Name = SelectedProgram.Name, YearEstablished = SelectedProgram.YearEstablished }; EditProgramWindow editWindow = new EditProgramWindow(EditedProgram); if (editWindow.ShowDialog() == true) { SelectedProgram.Actors = EditedProgram.Actors; SelectedProgram.AvatarSourcePath = EditedProgram.AvatarSourcePath; SelectedProgram.Description = EditedProgram.Description; SelectedProgram.Name = EditedProgram.Name; SelectedProgram.YearEstablished = EditedProgram.YearEstablished; _dataProvider.EditProgram(oldValue: SelectedProgram, newValue: EditedProgram); if (OnSelectedProgramChanged != null) { OnSelectedProgramChanged.Invoke(); } CardsWrapPanel.ReloadCard(SelectedProgram); } }
public IEnumerable <TV_ProgramDTO> GetPrograms() { List <TV_ProgramDTO> programsToReturn = new List <TV_ProgramDTO>(); SqliteCommand command = new SqliteCommand( "select TVProgram.Id as 'TVProgramId', TVProgram.name as 'ProgramName', " + "TVProgram.Description, TVProgram.Actors, TVProgram.YearEstablished, TVProgram.AvatarSourcePath, " + "MediaFile.Id as 'MediaFileId', MediaFile.name as 'MediaFileName', MediaFile.CompleteName, " + "MediaFile.Format, MediaFile.FrameSize, MediaFile.TimingInFrames, MediaFile.Program_Id " + "from TVProgram left join MediaFile on MediaFile.Program_Id = TVProgram.Id order by TVProgram.Id", _connection); SqliteDataReader reader = command.ExecuteReader();; int PreviousProgramId = -1; TV_ProgramDTO newProgram = new TV_ProgramDTO(); while (reader.Read()) { if (!reader.HasRows) { break; } // Загружаем программы. // Т.к. используется left join, то возможны ситуации когда одна и та же программа содержит 2 видео. // Что бы избежать дублирования введена проверка (запоминаем предыдущий Id и сравниваем с текущим) // 1Program 1Media <--Программу добавляем // 1Program 2Media <--Программу игнорируем // Принимается что -1 это первый запуск // При этом учитывается что произведена сортировка по восходящей по полю Id - "order by TVProgram.Id" int currentProgramId = int.Parse(reader["TVProgramId"].ToString()); if (PreviousProgramId != currentProgramId || PreviousProgramId == -1) { newProgram = new TV_ProgramDTO(); newProgram.Id = int.Parse(reader["TVProgramId"].ToString()); newProgram.Name = reader["ProgramName"].ToString(); newProgram.Description = reader["Description"].ToString(); newProgram.Actors = reader["Actors"].ToString(); newProgram.AvatarSourcePath = reader["AvatarSourcePath"].ToString(); PreviousProgramId = currentProgramId; int.TryParse(reader["YearEstablished"].ToString(), out int tempYear); newProgram.YearEstablished = tempYear; programsToReturn.Add(newProgram); } //Добавляем зависимые видеозаписи if (!string.IsNullOrEmpty(reader["MediaFileId"].ToString())) { MediaFileDTO newMediaFile = new MediaFileDTO(); newMediaFile.Id = int.Parse(reader["MediaFileId"].ToString()); newMediaFile.Name = reader["MediaFileName"].ToString(); newMediaFile.CompleteName = reader["CompleteName"].ToString(); newMediaFile.Format = reader["Format"].ToString(); newMediaFile.FrameSize = reader["FrameSize"].ToString(); int.TryParse(reader["TimingInFrames"].ToString(), out int tempFrames); newMediaFile.TimingInFrames = tempFrames; newMediaFile.ParentTvProgramId = int.Parse(reader["Program_Id"].ToString()); newProgram.MediaFiles.Add(newMediaFile); } } return(programsToReturn); }
public void ReloadCard(TV_ProgramDTO changedProgram) { foreach (TV_Card card in CardsWrapPanel.Children) { if (card.TVProgram == changedProgram) { card.Refresh(); break; } } }
private void SelectItem(TV_ProgramDTO program) { foreach (TV_Card card in CardsWrapPanel.Children) { if (card.TVProgram == program) { SelectCard(card); break; } } }
public void EditProgram(TV_ProgramDTO oldValue, TV_ProgramDTO newValue) { if (!IsProgramDataValid(newValue)) { throw new FormatException("Поступило некорректное значение"); } string sql = string.Format("update TVProgram SET name='{0}', Description='{1}', Actors='{2}', YearEstablished={3}, AvatarSourcePath='{4}' where id={5}", newValue.Name, newValue.Description, newValue.Actors, newValue.YearEstablished, newValue.AvatarSourcePath, oldValue.Id); SqliteCommand command = new SqliteCommand(sql, _connection); command.ExecuteNonQuery(); }
private void DeleteProgramHandle(TV_ProgramDTO program) { AllPrograms.Remove(program); _dataProvider.Remove(program); if (SelectedProgram == program && AllPrograms.Count > 0) { CardsWrapPanel.SelectedItem = AllPrograms[0]; } else if (AllPrograms.Count == 0) { CardsWrapPanel.SelectedItem = null; SelectedProgram = null; SelectedProgramChanged(); } }
public void AddProgram(TV_ProgramDTO Program) { if (!IsProgramDataValid(Program)) { throw new FormatException("Поступило некорректное значение"); } string sql = string.Format( "insert into TVProgram('Name', 'Description', 'Actors', 'YearEstablished', 'AvatarSourcePath') " + "values ('{0}', '{1}', '{2}', {3}, '{4}'); SELECT last_insert_rowid();", Program.Name, Program.Description, Program.Actors, Program.YearEstablished, Program.AvatarSourcePath); SqliteCommand command = new SqliteCommand(sql, _connection); int lastInsertedRowId = int.Parse(command.ExecuteScalar().ToString()); Program.Id = lastInsertedRowId; }
private void AddNewProgram_Click(object sender, RoutedEventArgs e) { TV_ProgramDTO EditedProgram = new TV_ProgramDTO(); EditProgramWindow editWindow = new EditProgramWindow(EditedProgram); if (editWindow.ShowDialog() == true) { _dataProvider.AddProgram(EditedProgram); AllPrograms.Add(EditedProgram); } if (SelectedProgram == null) { CardsWrapPanel.SelectedItem = AllPrograms[0]; } }
private async void AddVideosAsync(string[] Files) { TV_ProgramDTO parentProgram = SelectedProgram; foreach (string file in Files) { if (!_mediaInfoProvider.IsMediaFile(file)) { continue; } await Task.Run(() => { MediaFileDTO video = _mediaInfoProvider.GetMediaFileInfo(file, SelectedProgram); video.ParentTvProgramId = parentProgram.Id; App.Current.Dispatcher.Invoke(() => parentProgram.MediaFiles.Add(video)); App.Current.Dispatcher.Invoke(() => _dataProvider.AddVideoFileAsync(video)); }); } SelectedProgramChanged(); }
public TV_Card(TV_ProgramDTO program) { InitializeComponent(); OnItemChanged += DrawCard; TVProgram = program; }
private bool IsProgramDataValid(TV_ProgramDTO program) { return(true); //В рамках ТЗ не требуется, но в проекте я бы реализовал }
public EditProgramWindow(TV_ProgramDTO program) { InitializeComponent(); EditedProgram = program; InitializeForm(); }
private void CardSelectionChanged(object sender) { SelectedProgram = (sender as TV_Card).TVProgram; }