Add avatars and avatar document

This commit is contained in:
abazov73 2023-11-30 00:23:56 +04:00
parent c3d19cda92
commit 93ffc24a90
13 changed files with 198 additions and 16 deletions

View File

@ -28,7 +28,6 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAccount));
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.textBoxLogin = new System.Windows.Forms.TextBox(); this.textBoxLogin = new System.Windows.Forms.TextBox();
this.textBoxPassword = new System.Windows.Forms.TextBox(); this.textBoxPassword = new System.Windows.Forms.TextBox();
@ -39,6 +38,8 @@
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.buttonSave = new System.Windows.Forms.Button(); this.buttonSave = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.buttonAvatar = new System.Windows.Forms.Button();
this.SuspendLayout(); this.SuspendLayout();
// //
// label1 // label1
@ -100,7 +101,7 @@
// abazovCheckedListBox // abazovCheckedListBox
// //
this.abazovCheckedListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); this.abazovCheckedListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.abazovCheckedListBox.Location = new System.Drawing.Point(12, 195); this.abazovCheckedListBox.Location = new System.Drawing.Point(12, 207);
this.abazovCheckedListBox.Name = "abazovCheckedListBox"; this.abazovCheckedListBox.Name = "abazovCheckedListBox";
this.abazovCheckedListBox.selectedItem = null; this.abazovCheckedListBox.selectedItem = null;
this.abazovCheckedListBox.Size = new System.Drawing.Size(389, 130); this.abazovCheckedListBox.Size = new System.Drawing.Size(389, 130);
@ -110,7 +111,7 @@
// //
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(12, 172); this.label4.Location = new System.Drawing.Point(12, 184);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(78, 20); this.label4.Size = new System.Drawing.Size(78, 20);
this.label4.TabIndex = 7; this.label4.TabIndex = 7;
@ -118,7 +119,7 @@
// //
// buttonSave // buttonSave
// //
this.buttonSave.Location = new System.Drawing.Point(12, 364); this.buttonSave.Location = new System.Drawing.Point(12, 420);
this.buttonSave.Name = "buttonSave"; this.buttonSave.Name = "buttonSave";
this.buttonSave.Size = new System.Drawing.Size(94, 29); this.buttonSave.Size = new System.Drawing.Size(94, 29);
this.buttonSave.TabIndex = 8; this.buttonSave.TabIndex = 8;
@ -128,7 +129,7 @@
// //
// buttonCancel // buttonCancel
// //
this.buttonCancel.Location = new System.Drawing.Point(307, 364); this.buttonCancel.Location = new System.Drawing.Point(307, 420);
this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(94, 29); this.buttonCancel.Size = new System.Drawing.Size(94, 29);
this.buttonCancel.TabIndex = 9; this.buttonCancel.TabIndex = 9;
@ -136,11 +137,26 @@
this.buttonCancel.UseVisualStyleBackColor = true; this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
// //
// openFileDialog
//
this.openFileDialog.FileName = "openFileDialog1";
//
// buttonAvatar
//
this.buttonAvatar.Location = new System.Drawing.Point(12, 343);
this.buttonAvatar.Name = "buttonAvatar";
this.buttonAvatar.Size = new System.Drawing.Size(389, 29);
this.buttonAvatar.TabIndex = 10;
this.buttonAvatar.Text = "Выбрать аватар";
this.buttonAvatar.UseVisualStyleBackColor = true;
this.buttonAvatar.Click += new System.EventHandler(this.buttonAvatar_Click);
//
// FormAccount // FormAccount
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(413, 405); this.ClientSize = new System.Drawing.Size(413, 461);
this.Controls.Add(this.buttonAvatar);
this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonSave); this.Controls.Add(this.buttonSave);
this.Controls.Add(this.label4); this.Controls.Add(this.label4);
@ -171,5 +187,7 @@
private Label label4; private Label label4;
private Button buttonSave; private Button buttonSave;
private Button buttonCancel; private Button buttonCancel;
private OpenFileDialog openFileDialog;
private Button buttonAvatar;
} }
} }

View File

@ -21,6 +21,7 @@ namespace AccountsApp
private readonly IAccountLogic _logic; private readonly IAccountLogic _logic;
private readonly IInterestLogic _interestLogic; private readonly IInterestLogic _interestLogic;
private List<InterestViewModel> _interests; private List<InterestViewModel> _interests;
private string? avatar = null;
public int Id { set { _id = value; } } public int Id { set { _id = value; } }
public FormAccount(IAccountLogic logic, IInterestLogic interestLogic) public FormAccount(IAccountLogic logic, IInterestLogic interestLogic)
@ -47,6 +48,7 @@ namespace AccountsApp
textBoxLogin.Text = view.Login; textBoxLogin.Text = view.Login;
textBoxPassword.Text = view.Password; textBoxPassword.Text = view.Password;
mailControl.Email = view.Email; mailControl.Email = view.Email;
avatar = view.Avatar;
abazovCheckedListBox.selectedItem = view.InterestName; abazovCheckedListBox.selectedItem = view.InterestName;
} }
@ -86,6 +88,11 @@ namespace AccountsApp
MessageBox.Show("Заполните интересы", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("Заполните интересы", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return; return;
} }
if (avatar == null)
{
MessageBox.Show("Выберите аватар", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try try
{ {
var model = new AccountBindingModel var model = new AccountBindingModel
@ -94,7 +101,8 @@ namespace AccountsApp
Login = textBoxLogin.Text, Login = textBoxLogin.Text,
Password = textBoxPassword.Text, Password = textBoxPassword.Text,
Email = mailControl.Email, Email = mailControl.Email,
InterestId = _interests.First(x => x.Name == abazovCheckedListBox.selectedItem).Id InterestId = _interests.First(x => x.Name == abazovCheckedListBox.selectedItem).Id,
Avatar = avatar
}; };
var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model); var operationResult = _id.HasValue ? _logic.Update(model) : _logic.Create(model);
if (!operationResult) if (!operationResult)
@ -110,5 +118,13 @@ namespace AccountsApp
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void buttonAvatar_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() != DialogResult.Cancel)
{
avatar = openFileDialog.FileName;
}
}
} }
} }

View File

@ -57,12 +57,7 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="abazovCheckedListBox.selectedItems" mimetype="application/x-microsoft.net.object.binary.base64"> <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value> <value>17, 17</value>
AAEAAAD/////AQAAAAAAAAAEAQAAAH9TeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5MaXN0YDFbW1N5 </metadata>
c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVi
bGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24GAAAI
CAkCAAAAAAAAAAAAAAARAgAAAAAAAAAL
</value>
</data>
</root> </root>

View File

@ -28,6 +28,7 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container();
this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.аккаунтыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.аккаунтыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.создатьToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.создатьToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -39,6 +40,7 @@
this.документСДиаграммойToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.документСДиаграммойToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.интересыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.интересыToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.controlDataTable = new ControlsLibraryNet60.Data.ControlDataTableTable(); this.controlDataTable = new ControlsLibraryNet60.Data.ControlDataTableTable();
this.excelImagesComponent = new AbazovViewComponents.LogicalComponents.ExcelImagesComponent(this.components);
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -105,6 +107,7 @@
this.документToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.документToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.документToolStripMenuItem.Size = new System.Drawing.Size(313, 26); this.документToolStripMenuItem.Size = new System.Drawing.Size(313, 26);
this.документToolStripMenuItem.Text = "Документ"; this.документToolStripMenuItem.Text = "Документ";
this.документToolStripMenuItem.Click += new System.EventHandler(this.документToolStripMenuItem_Click);
// //
// документСТаблицейToolStripMenuItem // документСТаблицейToolStripMenuItem
// //
@ -167,5 +170,6 @@
private ToolStripMenuItem документСДиаграммойToolStripMenuItem; private ToolStripMenuItem документСДиаграммойToolStripMenuItem;
private ToolStripMenuItem интересыToolStripMenuItem; private ToolStripMenuItem интересыToolStripMenuItem;
private ControlsLibraryNet60.Data.ControlDataTableTable controlDataTable; private ControlsLibraryNet60.Data.ControlDataTableTable controlDataTable;
private AbazovViewComponents.LogicalComponents.ExcelImagesComponent excelImagesComponent;
} }
} }

View File

@ -1,4 +1,5 @@
using AccountsContracts.BindingModels; using AbazovViewComponents.LogicalComponents;
using AccountsContracts.BindingModels;
using AccountsContracts.BusinessLogicContracts; using AccountsContracts.BusinessLogicContracts;
using AccountsContracts.ViewModels; using AccountsContracts.ViewModels;
using ControlsLibraryNet60.Core; using ControlsLibraryNet60.Core;
@ -90,5 +91,16 @@ namespace AccountsApp
} }
} }
} }
private void документToolStripMenuItem_Click(object sender, EventArgs e)
{
List<string> avatars = new List<string>();
foreach (var account in _logic.ReadList(null))
{
avatars.Add(account.Avatar);
}
string path = AppDomain.CurrentDomain.BaseDirectory + "Аватары.xlsx";
if (excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Аватары", avatars.ToArray()))) MessageBox.Show("Документ создан");
}
} }
} }

View File

@ -60,6 +60,9 @@
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<metadata name="excelImagesComponent.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>152, 0</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value> <value>25</value>
</metadata> </metadata>

View File

@ -18,5 +18,7 @@ namespace AccountsContracts.BindingModels
public int Id { get; set; } public int Id { get; set; }
public int InterestId { get; set; } public int InterestId { get; set; }
public string Avatar { get; set; }
} }
} }

View File

@ -19,5 +19,6 @@ namespace AccountsContracts.ViewModels
public int Id { get; set; } public int Id { get; set; }
public int InterestId { get; set; } public int InterestId { get; set; }
public string InterestName { get; set; } = string.Empty; public string InterestName { get; set; } = string.Empty;
public string Avatar { get; set; } = string.Empty;
} }
} }

View File

@ -0,0 +1,91 @@
// <auto-generated />
using AccountsDataBaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace AccountsDataBaseImplement.Migrations
{
[DbContext(typeof(AccountsDatabase))]
[Migration("20231129200602_AddColumnAvatarToAccountTable")]
partial class AddColumnAvatarToAccountTable
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.3")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("AccountsDataBaseImplement.Models.Account", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Avatar")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text");
b.Property<int>("InterestId")
.HasColumnType("integer");
b.Property<string>("Login")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("InterestId");
b.ToTable("Accounts");
});
modelBuilder.Entity("AccountsDataBaseImplement.Models.Interest", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Name")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Interests");
});
modelBuilder.Entity("AccountsDataBaseImplement.Models.Account", b =>
{
b.HasOne("AccountsDataBaseImplement.Models.Interest", "Interest")
.WithMany()
.HasForeignKey("InterestId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Interest");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace AccountsDataBaseImplement.Migrations
{
/// <inheritdoc />
public partial class AddColumnAvatarToAccountTable : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Avatar",
table: "Accounts",
type: "text",
nullable: false,
defaultValue: "");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Avatar",
table: "Accounts");
}
}
}

View File

@ -29,6 +29,10 @@ namespace AccountsDataBaseImplement.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("Avatar")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Email") b.Property<string>("Email")
.IsRequired() .IsRequired()
.HasColumnType("text"); .HasColumnType("text");

View File

@ -26,6 +26,9 @@ namespace AccountsDataBaseImplement.Models
public virtual Interest Interest { get; set; } = new(); public virtual Interest Interest { get; set; } = new();
[Required]
public string Avatar { get; set; } = string.Empty;
public static Account? Create(AccountsDatabase context, AccountBindingModel? model) public static Account? Create(AccountsDatabase context, AccountBindingModel? model)
{ {
if (model == null) if (model == null)
@ -40,6 +43,7 @@ namespace AccountsDataBaseImplement.Models
Email = model.Email, Email = model.Email,
InterestId = model.InterestId, InterestId = model.InterestId,
Interest = context.Interests.First(x => x.Id == model.InterestId), Interest = context.Interests.First(x => x.Id == model.InterestId),
Avatar = model.Avatar,
}; };
} }
@ -53,6 +57,7 @@ namespace AccountsDataBaseImplement.Models
Password = model.Password; Password = model.Password;
InterestId = model.InterestId; InterestId = model.InterestId;
Interest = context.Interests.First(x => x.Id == model.InterestId); Interest = context.Interests.First(x => x.Id == model.InterestId);
Avatar = model.Avatar;
} }
public AccountViewModel GetViewModel => new() public AccountViewModel GetViewModel => new()
@ -63,6 +68,7 @@ namespace AccountsDataBaseImplement.Models
Email = Email, Email = Email,
InterestId = InterestId, InterestId = InterestId,
InterestName = Interest.Name, InterestName = Interest.Name,
Avatar = Avatar,
}; };
} }
} }

View File

@ -12,5 +12,6 @@ namespace AccountsDataModels.Models
string Password { get; } string Password { get; }
string Email { get; } string Email { get; }
public int InterestId { get; } public int InterestId { get; }
public string Avatar { get; }
} }
} }