104 lines
3.1 KiB
C#
104 lines
3.1 KiB
C#
using LDBproject.Entities.Enums;
|
|
using LDBproject.Entities;
|
|
using LDBproject.Repositories;
|
|
|
|
namespace LDBproject.AdditionalForms;
|
|
|
|
public partial class EmployeeF : Form
|
|
{
|
|
private readonly ILibrarianRep _libRepository;
|
|
private int? _librarianID;
|
|
|
|
public EmployeeF(ILibrarianRep librarianR)
|
|
{
|
|
InitializeComponent();
|
|
_libRepository = librarianR ?? throw new ArgumentNullException(nameof(librarianR));
|
|
foreach (var elem in Enum.GetValues(typeof(Genres)))
|
|
{
|
|
GenresCheckedBL.Items.Add(elem);
|
|
}
|
|
}
|
|
|
|
public int ID
|
|
{
|
|
set
|
|
{
|
|
try
|
|
{
|
|
var librarian = _libRepository.GetCardByID(value);
|
|
if (librarian == null)
|
|
{
|
|
throw new InvalidDataException(nameof(librarian));
|
|
}
|
|
|
|
// Uncheck all genres in the checklist box
|
|
for (int i = 0; i < GenresCheckedBL.Items.Count; i++)
|
|
{
|
|
GenresCheckedBL.SetItemChecked(i, false);
|
|
}
|
|
// Check the genres that are in the bitmask
|
|
foreach (Genres genre in Enum.GetValues(typeof(Genres)))
|
|
{
|
|
if ((genre & librarian.GenreMask) != 0 && genre != Genres.None)
|
|
{
|
|
int index = GenresCheckedBL.Items.IndexOf(genre);
|
|
if (index != -1)
|
|
{
|
|
GenresCheckedBL.SetItemChecked(index, true);
|
|
}
|
|
}
|
|
}
|
|
FIOEnterTb.Text = librarian.FIO;
|
|
_librarianID = value;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "EmployeeF [ Error : while setting ID ]", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SaveBtn_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrWhiteSpace(FIOEnterTb.Text)
|
|
|| GenresCheckedBL.CheckedItems.Count == 0)
|
|
{
|
|
throw new Exception("EmployeeF [ Blank spaces were left, not enough information ]");
|
|
}
|
|
|
|
if (_librarianID.HasValue)
|
|
{
|
|
_libRepository.ChangeCardInfo(CreateWorker(_librarianID.Value));
|
|
}
|
|
else
|
|
{
|
|
_libRepository.AddCard(CreateWorker(0));
|
|
}
|
|
Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "EmployeeF [ Error : while saving data ]",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private void CancelBtn_Click(object sender, EventArgs e) => Close();
|
|
|
|
private LibrarianCard CreateWorker(int id)
|
|
{
|
|
Genres selectedGenres = Genres.None;
|
|
foreach (var item in GenresCheckedBL.CheckedItems)
|
|
{
|
|
if (item is Genres genre)
|
|
selectedGenres |= genre;
|
|
}
|
|
|
|
return LibrarianCard.AddWorker(id, FIOEnterTb.Text, selectedGenres);
|
|
}
|
|
}
|
|
|