178 lines
4.3 KiB
C#
178 lines
4.3 KiB
C#
using DocumentFormat.OpenXml.Office2010.Excel;
|
|
using Library_var_4_lab_1;
|
|
using LibraryContracts.StorageContracts;
|
|
using LibraryDatabase.Models;
|
|
using LibraryDatabase.Storages;
|
|
using LibraryDataModels.Dtos;
|
|
using LibraryDataModels.Views;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Controls.Primitives;
|
|
using System.Windows.Forms;
|
|
using static LibraryUtils.ImageConverter.ImageConverter;
|
|
|
|
namespace LibraryWinFormsApp
|
|
{
|
|
public partial class FormBook : Form
|
|
{
|
|
public int _id { get; set; } = -1;
|
|
private string _cover { get; set; } = string.Empty;
|
|
private BookView? _book = null;
|
|
private IBookStorage _bookStorage;
|
|
private IAuthorStorage _authorStorage;
|
|
public FormBook(IBookStorage bookStorage, IAuthorStorage authorStorage)
|
|
{
|
|
InitializeComponent();
|
|
_bookStorage = bookStorage;
|
|
_authorStorage = authorStorage;
|
|
}
|
|
|
|
private void FormBook_Load(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private void LoadData()
|
|
{
|
|
try
|
|
{
|
|
releaseDateField.Template = @"^([1-9]|[12][0-9]|3[01]) (января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря) [0-9]{4}$";
|
|
var authors = _authorStorage.GetFullList();
|
|
if (authors != null)
|
|
{
|
|
foreach (var author in authors)
|
|
{
|
|
authorField.Input(author.Name);
|
|
}
|
|
}
|
|
if (_id != -1)
|
|
{
|
|
_book = _bookStorage.GetElement(new BookDto()
|
|
{
|
|
Id = _id,
|
|
});
|
|
if (_book != null)
|
|
{
|
|
_cover = _book.BookCover;
|
|
nameField.Text = _book.Name;
|
|
releaseDateField.Date = _book.ReleaseDate;
|
|
authorField.SelectedItem = _book.Author;
|
|
try
|
|
{
|
|
pictureBox.Image = StringToImage(_cover);
|
|
}
|
|
catch
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void FormBook_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
bool Changed = false;
|
|
if (_book == null)
|
|
{
|
|
if (!string.IsNullOrEmpty(_cover))
|
|
Changed = true;
|
|
if (!string.IsNullOrEmpty(nameField.Text))
|
|
Changed = true;
|
|
if (!string.IsNullOrEmpty(releaseDateField.Text))
|
|
Changed = true;
|
|
if (!string.IsNullOrEmpty(authorField.Text))
|
|
Changed = true;
|
|
}
|
|
else
|
|
{
|
|
if (_cover != _book.BookCover)
|
|
Changed = true;
|
|
if (nameField.Text != _book.Name)
|
|
Changed = true;
|
|
if (releaseDateField.Date != _book.ReleaseDate)
|
|
Changed = true;
|
|
if (authorField.SelectedItem != _book.Author)
|
|
Changed = true;
|
|
}
|
|
if (Changed)
|
|
{
|
|
DialogResult dialogResult = MessageBox.Show("Изменения не были сохранены. Всё равно выйти?", "Внимание!", MessageBoxButtons.YesNo);
|
|
if (dialogResult == DialogResult.No)
|
|
{
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void saveButton_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(_cover))
|
|
{
|
|
throw new Exception("Выберите обложку");
|
|
}
|
|
var book = new BookDto()
|
|
{
|
|
Name = nameField.Text,
|
|
BookCover = _cover,
|
|
Author = authorField.SelectedItem,
|
|
ReleaseDate = releaseDateField.Date,
|
|
};
|
|
if (_id != -1)
|
|
{
|
|
book.Id = _id;
|
|
_book = _bookStorage.Update(book);
|
|
}
|
|
else
|
|
{
|
|
_book = _bookStorage.Insert(book);
|
|
}
|
|
_id = _book?.Id ?? -1;
|
|
_cover = _book?.BookCover ?? string.Empty;
|
|
Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void changeCoverButton_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
var dialog = new OpenFileDialog();
|
|
|
|
dialog.Title = "Выберите изображение";
|
|
dialog.Filter = "Изображения|*.jpg;*.jpeg;*.png;*.bmp";
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
var image_new = new Bitmap(dialog.FileName);
|
|
pictureBox.Image = image_new;
|
|
_cover = ImageToString(image_new);
|
|
}
|
|
|
|
dialog.Dispose();
|
|
}
|
|
}
|
|
}
|