diff --git a/project/ProjectTourAgency/Enities/Client.cs b/project/ProjectTourAgency/Enities/Client.cs index 778d55f..52609a6 100644 --- a/project/ProjectTourAgency/Enities/Client.cs +++ b/project/ProjectTourAgency/Enities/Client.cs @@ -13,14 +13,16 @@ public class Client public string FullName { get; private set; } = string.Empty; public DateTime BirthDate { get; private set; } public string PhoneNumber { get; private set; } = string.Empty; + public ClientStatus ClientStatus { get; private set; } public int Money { get; private set; } public static Client CreateEntity(int id, string fullName, - DateTime birthDate, string phoneNumber, int money) + DateTime birthDate, string phoneNumber, int money, ClientStatus cs) { return new Client { Id = id, + ClientStatus = cs, FullName = fullName, BirthDate = birthDate, PhoneNumber = phoneNumber, diff --git a/project/ProjectTourAgency/Enities/Enums/ClientStatus.cs b/project/ProjectTourAgency/Enities/Enums/ClientStatus.cs new file mode 100644 index 0000000..57e0ea5 --- /dev/null +++ b/project/ProjectTourAgency/Enities/Enums/ClientStatus.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectTourAgency.Enities.Enums; + +[Flags] +public enum ClientStatus +{ + None = 0, + RegularCustomer = 1, + AgressiveCustomer = 2, + FriendlyCustomer = 3, + VIPCustomer = 4 + +} diff --git a/project/ProjectTourAgency/Enities/Route.cs b/project/ProjectTourAgency/Enities/Route.cs index 4d760ce..09e80b9 100644 --- a/project/ProjectTourAgency/Enities/Route.cs +++ b/project/ProjectTourAgency/Enities/Route.cs @@ -9,17 +9,15 @@ namespace ProjectTourAgency.Enities; public class Route { public int Id { get; private set; } - public int TourId { get; private set; } public string Destination { get; private set; } = string.Empty; public string Departure { get; private set; } = string.Empty; public int Duration { get; private set; } - public static Route CreateEntity(int id, int TourId, string destination, + public static Route CreateEntity(int id, string destination, string departure, int duration) { return new Route { Id = id, - TourId = TourId, Destination = destination, Departure = departure, Duration = duration diff --git a/project/ProjectTourAgency/Forms/FormAddMoney.cs b/project/ProjectTourAgency/Forms/FormAddMoney.cs index 918074d..4bd4d43 100644 --- a/project/ProjectTourAgency/Forms/FormAddMoney.cs +++ b/project/ProjectTourAgency/Forms/FormAddMoney.cs @@ -23,6 +23,7 @@ namespace ProjectTourAgency.Forms comboBoxClientId.DataSource = clientRepository.ReadClients(); comboBoxClientId.DisplayMember = "Name"; comboBoxClientId.ValueMember = "Id"; + } private void buttonSave_Click(object sender, EventArgs e) diff --git a/project/ProjectTourAgency/Forms/FormClient.Designer.cs b/project/ProjectTourAgency/Forms/FormClient.Designer.cs index 6cc1b92..98e0391 100644 --- a/project/ProjectTourAgency/Forms/FormClient.Designer.cs +++ b/project/ProjectTourAgency/Forms/FormClient.Designer.cs @@ -38,77 +38,88 @@ textBoxMoney = new TextBox(); buttonSave = new Button(); buttonCancel = new Button(); + checkedListBoxClientStatus = new CheckedListBox(); + labelClientStatus = new Label(); SuspendLayout(); // // labelName // labelName.AutoSize = true; - labelName.Location = new Point(12, 9); + labelName.Location = new Point(17, 15); + labelName.Margin = new Padding(4, 0, 4, 0); labelName.Name = "labelName"; - labelName.Size = new Size(75, 15); + labelName.Size = new Size(112, 25); labelName.TabIndex = 0; labelName.Text = "Полное имя"; // // labelDate // labelDate.AutoSize = true; - labelDate.Location = new Point(12, 45); + labelDate.Location = new Point(17, 75); + labelDate.Margin = new Padding(4, 0, 4, 0); labelDate.Name = "labelDate"; - labelDate.Size = new Size(90, 15); + labelDate.Size = new Size(137, 25); labelDate.TabIndex = 1; labelDate.Text = "Дата рождения"; // // labelNumber // labelNumber.AutoSize = true; - labelNumber.Location = new Point(12, 88); + labelNumber.Location = new Point(17, 147); + labelNumber.Margin = new Padding(4, 0, 4, 0); labelNumber.Name = "labelNumber"; - labelNumber.Size = new Size(101, 15); + labelNumber.Size = new Size(150, 25); labelNumber.TabIndex = 2; labelNumber.Text = "Номер телефона"; // // labelMoney // labelMoney.AutoSize = true; - labelMoney.Location = new Point(12, 128); + labelMoney.Location = new Point(17, 213); + labelMoney.Margin = new Padding(4, 0, 4, 0); labelMoney.Name = "labelMoney"; - labelMoney.Size = new Size(46, 15); + labelMoney.Size = new Size(67, 25); labelMoney.TabIndex = 3; labelMoney.Text = "Баланс"; // // textBoxName // - textBoxName.Location = new Point(131, 9); + textBoxName.Location = new Point(187, 15); + textBoxName.Margin = new Padding(4, 5, 4, 5); textBoxName.Name = "textBoxName"; - textBoxName.Size = new Size(100, 23); + textBoxName.Size = new Size(141, 31); textBoxName.TabIndex = 4; // // dateTimePickerDate // - dateTimePickerDate.Location = new Point(131, 45); + dateTimePickerDate.Location = new Point(187, 75); + dateTimePickerDate.Margin = new Padding(4, 5, 4, 5); dateTimePickerDate.Name = "dateTimePickerDate"; - dateTimePickerDate.Size = new Size(200, 23); + dateTimePickerDate.Size = new Size(284, 31); dateTimePickerDate.TabIndex = 5; // // textBoxNumber // - textBoxNumber.Location = new Point(131, 85); + textBoxNumber.Location = new Point(187, 142); + textBoxNumber.Margin = new Padding(4, 5, 4, 5); textBoxNumber.Name = "textBoxNumber"; - textBoxNumber.Size = new Size(100, 23); + textBoxNumber.Size = new Size(141, 31); textBoxNumber.TabIndex = 6; // // textBoxMoney // - textBoxMoney.Location = new Point(131, 125); + textBoxMoney.Location = new Point(187, 208); + textBoxMoney.Margin = new Padding(4, 5, 4, 5); textBoxMoney.Name = "textBoxMoney"; - textBoxMoney.Size = new Size(100, 23); + textBoxMoney.Size = new Size(141, 31); textBoxMoney.TabIndex = 7; // // buttonSave // - buttonSave.Location = new Point(49, 198); + buttonSave.Location = new Point(69, 378); + buttonSave.Margin = new Padding(4, 5, 4, 5); buttonSave.Name = "buttonSave"; - buttonSave.Size = new Size(75, 23); + buttonSave.Size = new Size(107, 38); buttonSave.TabIndex = 8; buttonSave.Text = "Сохранить"; buttonSave.UseVisualStyleBackColor = true; @@ -116,19 +127,40 @@ // // buttonCancel // - buttonCancel.Location = new Point(173, 198); + buttonCancel.Location = new Point(364, 378); + buttonCancel.Margin = new Padding(4, 5, 4, 5); buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(75, 23); + buttonCancel.Size = new Size(107, 38); buttonCancel.TabIndex = 9; buttonCancel.Text = "Отменить"; buttonCancel.UseVisualStyleBackColor = true; buttonCancel.Click += buttonCancel_Click; // + // checkedListBoxClientStatus + // + checkedListBoxClientStatus.FormattingEnabled = true; + checkedListBoxClientStatus.Location = new Point(187, 247); + checkedListBoxClientStatus.Name = "checkedListBoxClientStatus"; + checkedListBoxClientStatus.Size = new Size(284, 116); + checkedListBoxClientStatus.TabIndex = 10; + // + // labelClientStatus + // + labelClientStatus.AutoSize = true; + labelClientStatus.Location = new Point(17, 270); + labelClientStatus.Margin = new Padding(4, 0, 4, 0); + labelClientStatus.Name = "labelClientStatus"; + labelClientStatus.Size = new Size(67, 25); + labelClientStatus.TabIndex = 11; + labelClientStatus.Text = "Баланс"; + // // FormClient // - AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(389, 251); + ClientSize = new Size(556, 430); + Controls.Add(labelClientStatus); + Controls.Add(checkedListBoxClientStatus); Controls.Add(buttonCancel); Controls.Add(buttonSave); Controls.Add(textBoxMoney); @@ -139,6 +171,7 @@ Controls.Add(labelNumber); Controls.Add(labelDate); Controls.Add(labelName); + Margin = new Padding(4, 5, 4, 5); Name = "FormClient"; Text = "FormClient"; ResumeLayout(false); @@ -157,5 +190,7 @@ private TextBox textBoxMoney; private Button buttonSave; private Button buttonCancel; + private CheckedListBox checkedListBoxClientStatus; + private Label labelClientStatus; } } \ No newline at end of file diff --git a/project/ProjectTourAgency/Forms/FormClient.cs b/project/ProjectTourAgency/Forms/FormClient.cs index 9ee0970..b0e3949 100644 --- a/project/ProjectTourAgency/Forms/FormClient.cs +++ b/project/ProjectTourAgency/Forms/FormClient.cs @@ -1,6 +1,8 @@  +using Microsoft.VisualBasic.FileIO; using ProjectRouteAgency.Repositories; using ProjectTourAgency.Enities; +using ProjectTourAgency.Enities.Enums; using ProjectTourAgency.Implementations; using ProjectTourAgency.Repositories; using System; @@ -35,7 +37,17 @@ namespace ProjectTourAgency.Forms textBoxNumber.Text = client.PhoneNumber; textBoxMoney.Text = client.Money.ToString(); dateTimePickerDate.Value = client.BirthDate; + foreach (ClientStatus elem in +Enum.GetValues(typeof(ClientStatus))) + { + if ((elem & client.ClientStatus) != 0) + { + checkedListBoxClientStatus.SetItemChecked(checkedListBoxClientStatus.Items.IndexOf( + elem), true); + } + } + _clientId = value; } catch (Exception ex) { @@ -50,6 +62,10 @@ namespace ProjectTourAgency.Forms InitializeComponent(); _clientRepository = clientRepository ?? throw new ArgumentNullException(nameof(clientRepository)); + foreach (var elem in Enum.GetValues(typeof(ClientStatus))) + { + checkedListBoxClientStatus.Items.Add(elem); + } } @@ -59,7 +75,8 @@ namespace ProjectTourAgency.Forms { if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxNumber.Text) - || string.IsNullOrWhiteSpace(textBoxMoney.Text) || string.IsNullOrWhiteSpace(dateTimePickerDate.Text)) + || string.IsNullOrWhiteSpace(textBoxMoney.Text) || string.IsNullOrWhiteSpace(dateTimePickerDate.Text) + || checkedListBoxClientStatus.CheckedItems.Count == 0) { throw new Exception("Имеются незаполненные поля"); } @@ -70,7 +87,7 @@ namespace ProjectTourAgency.Forms } else { - _clientRepository.CreateClient(CreateClient(_clientId.Value)); + _clientRepository.CreateClient(CreateClient(0)); } Close(); } @@ -83,6 +100,17 @@ namespace ProjectTourAgency.Forms private void buttonCancel_Click(object sender, EventArgs e) => Close(); - private Client CreateClient(int id) => Client.CreateEntity(id, textBoxName.Text, dateTimePickerDate.Value,textBoxNumber.Text, Convert.ToInt32(textBoxMoney.Text)); + private Client CreateClient(int id) + { + ClientStatus clientStatus = ClientStatus.None; + foreach (var elem in checkedListBoxClientStatus.CheckedItems) + { + clientStatus |= (ClientStatus)elem; + } + return Client.CreateEntity(id, textBoxName.Text, dateTimePickerDate.Value, textBoxNumber.Text, + int.Parse(textBoxMoney.Text), clientStatus); + + + } } } diff --git a/project/ProjectTourAgency/Forms/FormClient.resx b/project/ProjectTourAgency/Forms/FormClient.resx index af32865..8b2ff64 100644 --- a/project/ProjectTourAgency/Forms/FormClient.resx +++ b/project/ProjectTourAgency/Forms/FormClient.resx @@ -1,7 +1,7 @@