diff --git a/ClassDiagram1.cd b/ClassDiagram1.cd
new file mode 100644
index 0000000..7b89419
--- /dev/null
+++ b/ClassDiagram1.cd
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/ClassDiagram1.png b/ClassDiagram1.png
new file mode 100644
index 0000000..4ea5ec3
Binary files /dev/null and b/ClassDiagram1.png differ
diff --git a/DC/CD_DB.cd b/DC/CD_DB.cd
new file mode 100644
index 0000000..d0fb2e4
--- /dev/null
+++ b/DC/CD_DB.cd
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+ AAADAAAAAAAAAAAAAAAAAAgAACAAgAAAAAAAAAAAAAA=
+ DataBase\AccessDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA=
+ DataBase\ChelDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA=
+ DataBase\ChildDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BAACAAAAJAAAAAAEAAAAAAAAAAAACAAEAAQAAAAABAA=
+ DataBase\CorrStajDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA=
+ DataBase\FreeDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA=
+ DataBase\LearnDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA=
+ DataBase\RabotinkDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAAAAA=
+ DataBase\RabotnikTypeStajDB.cs
+
+
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA=
+ DataBase\ShtatDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAAAEAAAAAAAAAQAAAAAAAAAAAAAAACAAAA=
+ DataBase\TypeStajDB.cs
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA=
+ DataBase\UserDB.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAAQAAEIAAABAAAAAAEAAAQAABACAAgACABIA=
+ DataBase\ConnectDB.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_DB_2.cd b/DC/CD_DB_2.cd
new file mode 100644
index 0000000..02c7402
--- /dev/null
+++ b/DC/CD_DB_2.cd
@@ -0,0 +1,11 @@
+
+
+
+
+
+ BSSTjADAzlZYlACEECmxBNd8Y8AAMCSYAGggMG1jQCI=
+ DataBase\AccessDB.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_1.cd b/DC/CD_M_1.cd
new file mode 100644
index 0000000..b716ce8
--- /dev/null
+++ b/DC/CD_M_1.cd
@@ -0,0 +1,50 @@
+
+
+
+
+
+ AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA=
+ DataBase\ChildDB.cs
+
+
+
+
+
+ AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA=
+ DataBase\UserDB.cs
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAAAAAA=
+ Program.cs
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAACAgQBAABGCCACCCAAACACAABAQBAAAA8gE=
+ SupportForms\ChildForm.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAACAAQBAAAACCCCACAAAAACAAAAABQBAAQQE=
+ SupportForms\LoginForm.cs
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_2.cd b/DC/CD_M_2.cd
new file mode 100644
index 0000000..89aa89b
--- /dev/null
+++ b/DC/CD_M_2.cd
@@ -0,0 +1,24 @@
+
+
+
+
+
+ AIgQBAABgCAAABADAACACCADAAAIAQEIgGAAACABAAE=
+ MainForms\ChildForm.cs
+
+
+
+
+
+ AAAAAAAAACAAQBAAAACCCCACAAAAACAAEAABAAAAQAE=
+ MainForms\LoginForm.cs
+
+
+
+
+
+ QIAQEAABACAAQBADAECACGACAAAAAQAIgGAAAAABIBE=
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_3.cd b/DC/CD_M_3.cd
new file mode 100644
index 0000000..54ffe68
--- /dev/null
+++ b/DC/CD_M_3.cd
@@ -0,0 +1,105 @@
+
+
+
+
+
+ BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA=
+ DataBase\RabotinkDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AKASAAgDJCEAABYVDCSBCCKCIABAIQEIQLhBESgJABE=
+ MainForms\RabForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AKAQAAABACARABAXAAaAKCCiBAEIAQAIAGBAAQAhIIE=
+ MainForms\StajForm.cs
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA=
+ GlobalFormFunc.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_4.cd b/DC/CD_M_4.cd
new file mode 100644
index 0000000..6ba0d73
--- /dev/null
+++ b/DC/CD_M_4.cd
@@ -0,0 +1,61 @@
+
+
+
+
+
+ AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA=
+ DataBase\ShtatDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AIAQAAAhACAIQhAHBCCBCCICAAAAAwEIgMBhACABAAE=
+ MainForms\ShtatForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAQACAAQBAAAACCACACAAAAACAAAAABAAABQCk=
+ SupportForms\WorkShtatForm.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA=
+ GlobalFormFunc.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_5.cd b/DC/CD_M_5.cd
new file mode 100644
index 0000000..39ff402
--- /dev/null
+++ b/DC/CD_M_5.cd
@@ -0,0 +1,45 @@
+
+
+
+
+
+ AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA=
+ DataBase\ChelDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AIExAAABACAIQBAHBCCBCCACAAAAAQGYgMBhACABAAE=
+ MainForms\ChelForm.cs
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA=
+ GlobalFormFunc.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_6.cd b/DC/CD_M_6.cd
new file mode 100644
index 0000000..5c9a9c3
--- /dev/null
+++ b/DC/CD_M_6.cd
@@ -0,0 +1,52 @@
+
+
+
+
+
+ BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA=
+ DataBase\FreeDB.cs
+
+
+
+
+
+ BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA=
+ DataBase\LearnDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ACAAAEAQACAAQBAAAACCACACAAABACDAEAABAAQAQAE=
+ SupportForms\LearnForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAkAAACABQBEQAACCACACAAAAACAAAAABAAUAQAE=
+ SupportForms\OptForm.cs
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DC/CD_M_7.cd b/DC/CD_M_7.cd
new file mode 100644
index 0000000..04ed242
--- /dev/null
+++ b/DC/CD_M_7.cd
@@ -0,0 +1,30 @@
+
+
+
+
+
+ QIAQAAABACAAABADAACACCACAAAAQQAIgEAAAAABIAE=
+
+
+
+
+
+ QIAUAAABACAAAACJAQCACCACAAA4AQAIECAgAAABAAE=
+
+
+
+
+
+ EAgAQAAAACAQQBAABCCCACCCAAACACAAAAhBAAEAQAk=
+ SupportForms\WorkChelForm.cs
+
+
+
+
+
+ AAAAAAAAACAAABgDAACCACACAAACACAAAAAAAAEAAAE=
+ SupportForms\WorkerForm.Designer.cs
+
+
+
+
\ No newline at end of file
diff --git a/DC/ClassDiagram2.cd b/DC/ClassDiagram2.cd
new file mode 100644
index 0000000..108cdae
--- /dev/null
+++ b/DC/ClassDiagram2.cd
@@ -0,0 +1,462 @@
+
+
+
+
+
+ AAADAAAAAAAAAAAAAAAAAAgAACAAgAAAAAAAAAAAAAA=
+ DataBase\AccessDB.cs
+
+
+
+
+
+
+
+
+ BSSTjADAzlZYlACEECmxBNd8Y8AAMCSYAGggMG1jQCI=
+ DataBase\AccessDB.cs
+
+
+
+
+
+ AgACAAAAAAAAEBAAADAAAABAAAAMAAADAAAAoAIBAAA=
+ DataBase\ChelDB.cs
+
+
+
+
+
+
+
+
+
+
+
+ AgACAAAAAAAAABAAAAAAAAAAAwAMMAAAAAAAAAIAAAA=
+ DataBase\ChildDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAAQAAEIAAABAAAAAAEAAAQAABACAAgACABIA=
+ DataBase\ConnectDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BAACAAAAJAAAAAAEAAAAAAAAAAAACAAEAAQAAAAABAA=
+ DataBase\CorrStajDB.cs
+
+
+
+
+
+
+
+
+
+ BAICAAAAACAAAAAAAAAAAAAAAAAACAAAAQAAAAAAAAA=
+ DataBase\FreeDB.cs
+
+
+
+
+
+
+
+
+ BAICCAQAAAAQAAAAAAAAAAAAAAAACAAAAQAAQAAAAAA=
+ DataBase\LearnDB.cs
+
+
+
+
+
+
+
+
+ BAICAAAAACAAEAAAAAAAAAAAAAAACBEAAAAAAACAIAA=
+ DataBase\RabotinkDB.cs
+
+
+
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAQAAAAAAAA=
+ DataBase\RabotnikTypeStajDB.cs
+
+
+
+
+
+ AAACAAAAAAAAgAAAAAAAAQAAAAAAAAAhAAAAAAAAAAA=
+ DataBase\ShtatDB.cs
+
+
+
+
+
+
+
+
+ AAACAAAAAAAAEAAAAAAAAAQAAAAAAAAAAAAAAACAAAA=
+ DataBase\TypeStajDB.cs
+
+
+
+
+
+
+
+
+
+ AAACAAAAAAQAAAAAEAAAIAAAAAAAAAAAAAAQAAAAAIA=
+ DataBase\UserDB.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAABAAAAAA=
+ Program.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AIExAAABACAIQBAHBCCBCCACAAAAAQGYgMBhACABAAE=
+ MainForms\ChelForm.cs
+
+
+
+
+
+
+
+
+
+
+
+ AIgQBAABgCAAABADAACACCADAAAIAQEIgGAAACABAAE=
+
+
+
+
+
+ QIAQAAABACAAABADAACACCACAAAAQQAIgEAAAAABIAE=
+
+
+
+
+
+ AAAAAAAAACAAQBAAAACCCCACAAAAACAAEAABAAAAQAE=
+ MainForms\LoginForm.cs
+
+
+
+
+
+ QIAQEAABACAAQBADAECACGACAAAAAQAIgGAAAAABIBE=
+
+
+
+
+
+ AKASAAgDJCEAABYVDCSBCCKCIABAIQEIQLhBESgJABE=
+ MainForms\RabForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QIAUAAABACAAAACJAQCACCACAAA4AQAIECAgAAABAAE=
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AIAQAAAhACAIQhAHBCCBCCICAAAAAwEIgMBhACABAAE=
+ MainForms\ShtatForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AKAQAAABACARABAXAAaAKCCiBAEIAQAIAGBAAQAhIIE=
+ MainForms\StajForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAAAAACAgQBAABGCCACCCAAACACAABAQBAAAA8gE=
+ SupportForms\ChildForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ACAAAEAQACAAQBAAAACCACACAAABACDAEAABAAQAQAE=
+ SupportForms\LearnForm.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAACAAQBAAAACCCCACAAAAACAAAAABQBAAQQE=
+ SupportForms\LoginForm.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AAAAAkAAACABQBEQAACCACACAAAAACAAAAABAAUAQAE=
+ SupportForms\OptForm.cs
+
+
+
+
+
+
+
+
+ EAgAQAAAACAQQBAABCCCACCCAAACACAAAAhBAAEAQAk=
+ SupportForms\WorkChelForm.cs
+
+
+
+
+
+ AAAAAAAAACAAABgDAACCACACAAACACAAAAAAAAEAAAE=
+ SupportForms\WorkerForm.Designer.cs
+
+
+
+
+
+ AAAAAAAQACAAQBAAAACCACACAAAAACAAAAABAAABQCk=
+ SupportForms\WorkShtatForm.cs
+
+
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAIAAAAAAAAAEAEAAAAAAAAAAAAA=
+ GlobalFormFunc.cs
+
+
+
+
\ No newline at end of file
diff --git a/DataBase/AccessDB.cs b/DataBase/AccessDB.cs
new file mode 100644
index 0000000..144ce3e
--- /dev/null
+++ b/DataBase/AccessDB.cs
@@ -0,0 +1,226 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Access
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("User")]
+ public int UserId { get; set; }
+ public User User { get; set; }
+ public int FormId { get; set; }
+ public int FormatAccess { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void AccessCheckValid(Access obj)
+ {
+ try
+ {
+ if (obj == null) throw new Exception("Ошибка инициализации.");
+ if (UserGetById(obj.UserId) == null) throw new Exception("Пользователь не указан.");
+ if (obj.FormId < 0 || obj.FormId >= FormArray.formName.Length) throw new Exception("Неверно указана форма.");
+ if (obj.FormId < 0 || obj.FormatAccess >= FormArray.formAccess.Length) throw new Exception("Неверно указаны разрешения");
+ }
+ catch { throw; }
+ }
+
+ public static Access AccessGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Accessy
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Access[] AccessGetByUserIdFormId(int UserId, int FormId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Accessy
+ where a.UserId == UserId && a.FormId == FormId
+ select a;
+ try
+ {
+ return res.ToArray();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Access AccessGetByUserIdFormIdAccessId(int UserId, int FormId, int AccessId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Accessy
+ where
+ a.UserId == UserId &&
+ a.FormId == FormId &&
+ a.FormatAccess == AccessId
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void AccessAdd(Access obj)
+ {
+ try
+ {
+ AccessCheckValid(obj);
+ var local_obj = AccessGetByUserIdFormIdAccessId(obj.UserId, obj.FormId, obj.FormatAccess);
+ if (local_obj == null)
+ using (var db = new MainDB())
+ {
+ db.Accessy.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void AccessDelete(Access obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = AccessGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Разрешение не существует.");
+ using (var db = new MainDB())
+ {
+ db.Accessy.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Access[] AccessList(int UserId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var access = (
+ from a in db.Accessy
+ where a.UserId == UserId
+ orderby a.FormId
+ orderby a.FormatAccess
+ select a
+ ).ToArray();
+ return access;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static bool[,] AccessListTable(int UserId)
+ {
+ try
+ {
+ var result = new bool[FormArray.formName.Length, FormArray.formAccess.Length];
+ using (var db = new MainDB())
+ {
+ var list = AccessList(UserId);
+ foreach (var r in list)
+ result[r.FormId, r.FormatAccess] = true;
+ return result;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static int AccessToSettingsFullCountWithoutUserId(User user)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var users =
+ (from a in db.Usery
+ where a.Id != user.Id
+ select a).ToArray();
+ var count = 0;
+ foreach(var usr in users)
+ {
+ var access =
+ from a in db.Accessy
+ where
+ a.UserId == usr.Id &&
+ a.FormId == 7
+ select a;
+ if (access.Count() == FormArray.formAccess.Length)
+ count++;
+ }
+ return count;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/DataBase/ChelDB.cs b/DataBase/ChelDB.cs
new file mode 100644
index 0000000..b61122e
--- /dev/null
+++ b/DataBase/ChelDB.cs
@@ -0,0 +1,322 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Chel
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string FName { get; set; }
+ public string SName { get; set; }
+ public string TName { get; set; }
+ public bool Male { get; set; }
+ public DateTime Birthday { get; set; }
+ public string Address { get; set; }
+ public string INN { get; set; }
+ public string Phone { get; set; }
+ public string SNILS { get; set; }
+ public string Pasport { get; set; }
+ public bool Pensia { get; set; }
+ public List CorrStajy { get; set; }
+ public List Learny { get; set; }
+ public List Rabotniky { get; set; }
+ public List Freey { get; set; }
+
+ }
+
+ public static partial class FuncDB
+ {
+ public static void ChelCheckValid(Chel obj)
+ {
+ try
+ {
+ if (obj == null) throw new Exception("Ошибка инициализации человека.");
+ if (string.IsNullOrEmpty(obj.FName)) throw new Exception("Фамилия не указана.");
+ if (string.IsNullOrEmpty(obj.SName)) throw new Exception("Имя не указано.");
+ if (obj.Birthday > DateTime.Now) throw new Exception("Дата рождения не верна.");
+ if (obj.Birthday > DateTime.Now.AddYears(-18).AddDays(1)) throw new Exception("Нельза добавить несовершеннолетнего.");
+ var rgx = new Regex("^[0-9]{12}$");
+ if (!rgx.IsMatch(obj.INN)) throw new Exception("ИНН указан неверно.");
+ rgx = new Regex("^[0-9]{3}-[0-9]{3}-[0-9]{3} [0-9]{2}$");
+ if (!rgx.IsMatch(obj.SNILS)) throw new Exception("СНИЛС указан неверно.");
+ if (string.IsNullOrEmpty(obj.Pasport)) throw new Exception("Надо добавить паспорт.");
+ }
+ catch { throw; }
+ }
+
+ public static Chel ChelGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Chely
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Chel ChelGetByINN(string inn)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Chely
+ where a.INN == inn
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Chel ChelGetBySNILS(string snils)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Chely
+ where a.SNILS == snils
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static string ChelGetFIOShortById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ (from a in db.Chely
+ where a.Id == id
+ select a).Single();
+ try
+ {
+ return res.FName + " " +
+ res.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(res.TName)) ?
+ res.TName[0].ToString() + "." : "");
+ }
+ catch
+ {
+ return "";
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void ChelAdd(Chel obj)
+ {
+ try
+ {
+ ChelCheckValid(obj);
+ if (ChelGetByINN(obj.INN) != null)
+ throw new Exception("ИНН повторяется.");
+ if (ChelGetBySNILS(obj.SNILS) != null)
+ throw new Exception("СНИЛС повторяется.");
+ using (var db = new MainDB())
+ {
+ db.Chely.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ChelChange(Chel obj)
+ {
+ try
+ {
+ ChelCheckValid(obj);
+ var localObj = ChelGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Человека не существует.");
+ var innObj = ChelGetByINN(obj.INN);
+ if (innObj != null && innObj.Id != localObj.Id)
+ throw new Exception("ИНН повторяется.");
+ var snilsObj = ChelGetBySNILS(obj.SNILS);
+ if (snilsObj != null && snilsObj.Id != localObj.Id)
+ throw new Exception("СНИЛС повторяется.");
+ using (var db = new MainDB())
+ {
+ db.Chely.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ChelDelete(Chel obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = ChelGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Человека не существует.");
+ using (var db = new MainDB())
+ {
+ db.Chely.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Chel[] ChelList(string filter = null, bool isWorker = true)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var chels = (
+ from a in db.Chely
+ select a
+ ).ToList();
+
+ filter = filter == null ? "" : filter.ToLower();
+ for (var i = 0; i < chels.Count;)
+ {
+ if (!isWorker)
+ {
+ var check = new List(RabotnikHistoryByChelId(chels[i].Id));
+ var a = check.FindAll(x => !x.End.HasValue || (x.Start >= DateTime.Now && x.End.Value <= DateTime.Now)).Count();
+ if (a > 0)
+ {
+ chels.RemoveAt(i);
+ continue;
+ }
+ }
+
+ var fname = chels[i].FName.ToLower();
+ var sname = chels[i].SName.ToLower();
+ var tname = chels[i].TName.ToLower();
+ var bday = chels[i].Birthday.ToString("yyyy.MM.dd");
+ var adres = chels[i].Address.ToLower();
+ var inn = chels[i].INN.ToLower();
+ var snils = chels[i].SNILS.ToLower();
+ var pasp = chels[i].Pasport.ToLower();
+ if (
+ fname.Contains(filter) || sname.Contains(filter) ||
+ tname.Contains(filter) || bday.Contains(filter) ||
+ adres.Contains(filter) || inn.Contains(filter) ||
+ snils.Contains(filter) || pasp.Contains(filter)
+ )
+ i++;
+ else
+ chels.RemoveAt(i);
+ }
+ return chels.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static string[][] ChelListTableMain(string filter = null, bool isWorker = true)
+ {
+ try
+ {
+ return ChelListTableMain(ChelList(filter, isWorker));
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] ChelListTableMain(Chel[] data)
+ {
+ try
+ {
+ var result = new List();
+ foreach (var chel in data)
+ result.Add(
+ new string[]
+ {
+ chel.Id.ToString(),
+ chel.FName.ToString(),
+ chel.SName.ToString(),
+ chel.TName.ToString(),
+ chel.Male ? "Муж." : "Жен.",
+ chel.Birthday.ToString("yyyy.MM.dd"),
+ chel.Address.ToString(),
+ chel.Phone.ToString(),
+ chel.INN.ToString(),
+ chel.SNILS.ToString(),
+ chel.Pasport.ToString(),
+ chel.Pensia ? "Да" : "Нет",
+ }
+ );
+ return result.ToArray();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/DataBase/ChildDB.cs b/DataBase/ChildDB.cs
new file mode 100644
index 0000000..16a1ff1
--- /dev/null
+++ b/DataBase/ChildDB.cs
@@ -0,0 +1,264 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Child
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("Chel")]
+ public int? Parent1Id { get; set; }
+ public Chel Parent1 { get; set; }
+ [ForeignKey("Chel")]
+ public int? Parent2Id { get; set; }
+ public Chel Parent2 { get; set; }
+ public string FName { get; set; }
+ public string SName { get; set; }
+ public string TName { get; set; }
+ public bool Male { get; set; }
+ public DateTime Birthday { get; set; }
+
+ }
+
+ public static partial class FuncDB
+ {
+ public static void ChildCheckValid(Child obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации ребенка.");
+ if (string.IsNullOrEmpty(obj.FName))
+ throw new Exception("Пустая фамилия.");
+ if (string.IsNullOrEmpty(obj.FName))
+ throw new Exception("Пустое имя.");
+ if (!obj.Parent2Id.HasValue && !obj.Parent1Id.HasValue)
+ throw new Exception("Не указано ни одного родителя.");
+ if (obj.Parent2Id.HasValue && obj.Parent1Id.HasValue && obj.Parent1Id.Value == obj.Parent2Id.Value)
+ throw new Exception("Указан один и тот же родитель 2 раза.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Child ChildGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Childy
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void ChildAdd(Child obj)
+ {
+ try
+ {
+ ChildCheckValid(obj);
+ if (!obj.Parent1Id.HasValue && obj.Parent2Id.HasValue)
+ {
+ obj.Parent1Id = obj.Parent2Id;
+ obj.Parent2Id = null;
+ }
+ using (var db = new MainDB())
+ {
+ db.Childy.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ChildChange(Child obj)
+ {
+ try
+ {
+ ChildCheckValid(obj);
+ var localObjById = ChildGetById(obj.Id);
+ if (localObjById == null)
+ throw new Exception("Не существует запись о ребенке.");
+ if (!obj.Parent1Id.HasValue && obj.Parent2Id.HasValue)
+ {
+ obj.Parent1Id = obj.Parent2Id;
+ obj.Parent2Id = null;
+ }
+ using (var db = new MainDB())
+ {
+ db.Childy.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ChildDelete(Child obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = ChildGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Запись о ребенке не существует.");
+ using (var db = new MainDB())
+ {
+ db.Childy.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Child[] ChildList(string filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var child = (
+ from a in db.Childy
+ select a
+ ).ToList();
+ var _filter = string.IsNullOrEmpty(filter) ? "" : filter.ToLower();
+ for (var i = 0; i < child.Count;)
+ {
+ var fname = child[i].FName.ToLower();
+ var sname = child[i].SName.ToLower();
+ var tname = child[i].TName.ToLower();
+ var bday = child[i].Birthday.ToString("yyyy.MM.dd");
+ if (
+ fname.Contains(filter) || sname.Contains(filter) ||
+ tname.Contains(filter) || bday.Contains(filter)
+ )
+ i++;
+ else
+ child.RemoveAt(i);
+ }
+ return child.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static string[][] ChildTableMain(string filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var result = new List();
+ var childs = ChildList(filter);
+ foreach (var child in childs)
+ {
+ result.Add(
+ new string[]
+ {
+ child.Id.ToString(),
+ child.FName + " " +
+ child.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(child.TName)) ?
+ child.TName[0].ToString() + "." : ""),
+ child.Male ? "Мальчик" : "Девочка",
+ child.Birthday.ToString("yyyy.MM.dd"),
+ child.Parent1Id.HasValue ? ChelGetFIOShortById(child.Parent1Id.Value) : "",
+ child.Parent2Id.HasValue ? ChelGetFIOShortById(child.Parent2Id.Value) : ""
+ }
+ );
+ }
+ return result.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static int ChildCount(DateTime dt, bool? isMale = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var workIds = (
+ from a in db.Rabotniky
+ where
+ !a.End.HasValue ||
+ (
+ dt >= a.Start
+ &&
+ dt <= a.End.Value
+ )
+ select a.ChelId
+ ).ToArray();
+ var _dt = dt.AddYears(-15);
+ var res = (
+ from a in db.Childy
+ where
+ a.Birthday > _dt
+ &&
+ (
+ !isMale.HasValue
+ ||
+ a.Male == isMale.Value
+ )
+ &&
+ (
+ (
+ a.Parent1Id.HasValue
+ &&
+ workIds.Contains(a.Parent1Id.Value)
+ )
+ ||
+ (
+ a.Parent2Id.HasValue
+ &&
+ workIds.Contains(a.Parent2Id.Value)
+ )
+ )
+ select a
+ ).Count();
+ return res;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ }
+}
diff --git a/DataBase/ConnectDB.cs b/DataBase/ConnectDB.cs
index 3a4b5fd..13970eb 100644
--- a/DataBase/ConnectDB.cs
+++ b/DataBase/ConnectDB.cs
@@ -15,7 +15,14 @@ namespace Diplom_O.DataBase
public DbSet Shtat { get; set; }
public DbSet Rabotniky { get; set; }
public DbSet Chely { get; set; }
- public DbSet ChelToChely { get; set; }
+ public DbSet TypeStajy { get; set; }
+ public DbSet RabotnikTypeStajy { get; set; }
+ public DbSet Childy { get; set; }
+ public DbSet Learny { get; set; }
+ public DbSet CorrStajy { get; set; }
+ public DbSet Freey { get; set; }
+ public DbSet Accessy { get; set; }
+ public DbSet Usery { get; set; }
public MainDB()
{
@@ -29,67 +36,30 @@ namespace Diplom_O.DataBase
protected override void OnModelCreating(ModelBuilder modelBuilder) { }
}
- public class Rabotnik
- {
- [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; set; }
- [ForeignKey("Chel")]
- public int ChelId { get; set; }
- public Chel Chel { get; set; }
- [ForeignKey("Shtat")]
- public int ShtatId { get; set; }
- public Shtat Shtat { get; set; }
- public string KodSotr { get; set; }
- public string Kategoriya { get; set; }
- public bool Pensiya { get; set; }
-
- public DateTime Start { get; set; }
- public DateTime? End { get; set; }
-
- }
-
- public class Shtat
+ public static partial class FuncDB
{
- [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; set; }
- public string Doljnost { get; set; }
- public int Size { get; set; }
- public bool Active { get; set; }
- }
- public class Chel
- {
- [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; set; }
- public string FName { get; set; }
- public string SName { get; set; }
- public string TName { get; set; }
- public bool Male { get; set; }
- public DateTime Birthday { get; set; }
- public string Address { get; set; }
- public string INN { get; set; }
- public string SNILS { get; set; }
- public string Pasport { get; set; }
- public List Rabota { get; set; }
- }
- public class ChelToChel
- {
- [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; set; }
- [ForeignKey("Chel1")]
- public int Chel1Id { get; set; }
- public Chel Chel1 { get; set; }
- [ForeignKey("Chel2")]
- public int Chel2Id { get; set; }
- public Chel Chel2 { get; set; }
- public int Lvl { get; set; }
+ public static void InitDB()
+ {
+ if (UserGetByLogin("Admin") != null)
+ return;
+ var user = new User()
+ {
+ Login = "Admin",
+ Pass = "Admin",
+ Hide = true,
+ Default = 7
+ };
+ UserAdd(user);
+ }
}
-}
+
+ }
diff --git a/DataBase/CorrStajDB.cs b/DataBase/CorrStajDB.cs
new file mode 100644
index 0000000..9dc3e03
--- /dev/null
+++ b/DataBase/CorrStajDB.cs
@@ -0,0 +1,179 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class CorrStaj
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("Chel")]
+ public int ChelId { get; set; }
+ public Chel Chel { get; set; }
+ [ForeignKey("TypeStaj")]
+ public int TypeStajId { get; set; }
+ public TypeStaj TypeStaj { get; set; }
+ public int Year { get; set; }
+ public int Month { get; set; }
+ public int Day { get; set; }
+ public bool AddFlag { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void CorrStajValid(CorrStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации стажа.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static CorrStaj CorrStajGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var corrstaj =
+ from a in db.CorrStajy
+ where a.Id == id
+ select a;
+ try
+ {
+ return corrstaj.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static CorrStaj CorrStaj(int chelId, string name)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var ts = TypeStajGetByName(name);
+ if (ts == null)
+ return null;
+ var corrstaj =
+ from a in db.CorrStajy
+ where a.TypeStajId == ts.Id && a.ChelId == chelId
+ select a;
+ try
+ {
+ return corrstaj.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void CorrStajAdd(CorrStaj obj)
+ {
+ try
+ {
+ CorrStajValid(obj);
+ using (var db = new MainDB())
+ {
+ db.CorrStajy.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void CorrStajChange(CorrStaj obj)
+ {
+ try
+ {
+ CorrStajValid(obj);
+ var localObjById = CorrStajGetById(obj.Id);
+ var localObjByName = CorrStaj(obj.ChelId, TypeStajGetById(obj.TypeStajId).Name);
+ if (localObjById == null)
+ throw new Exception("Корректировка стажа не существует.");
+ if (localObjByName != null &&
+ localObjByName.Id != localObjById.Id)
+ throw new Exception("Корректировка стажа существует.");
+ using (var db = new MainDB())
+ {
+ db.CorrStajy.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void CorrStajDelete(CorrStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = CorrStajGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Корректироваки стажа не существует.");
+ using (var db = new MainDB())
+ {
+ db.CorrStajy.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static CorrStaj[] CorrStajList(int chelId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res = (
+ from a in db.CorrStajy
+ where a.ChelId == chelId
+ select a
+ ).ToList();
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ }
+
+
+}
diff --git a/DataBase/FreeDB.cs b/DataBase/FreeDB.cs
new file mode 100644
index 0000000..0f3aa0d
--- /dev/null
+++ b/DataBase/FreeDB.cs
@@ -0,0 +1,224 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Free
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("Chel")]
+ public int ChelId { get; set; }
+ public Chel Chel { get; set; }
+ public string Type { get; set; }
+ public DateTime Start { get; set; }
+ public DateTime? End { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void FreeCheckValid(Free obj)
+ {
+ try
+ {
+ if (obj == null) throw new Exception("Ошибка инициализации.");
+ if (string.IsNullOrEmpty(obj.Type)) throw new Exception("Тип не указан.");
+ }
+ catch { throw; }
+ }
+ public static Free FreeGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Freey
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void FreeAdd(Free obj)
+ {
+ try
+ {
+ FreeCheckValid(obj);
+ using (var db = new MainDB())
+ {
+ obj.Start = new DateTime(obj.Start.Year, obj.Start.Month, obj.Start.Day, 0, 0, 0);
+ if (obj.End.HasValue)
+ obj.End = new DateTime(obj.End.Value.Year, obj.End.Value.Month, obj.End.Value.Day, 23, 59, 59);
+ db.Freey.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void FreeChange(Free obj)
+ {
+ try
+ {
+ FreeCheckValid(obj);
+ var localObj = FreeGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Отстранение не указано.");
+ using (var db = new MainDB())
+ {
+ obj.Start = new DateTime(obj.Start.Year, obj.Start.Month, obj.Start.Day, 0, 0, 0);
+ if (obj.End.HasValue)
+ obj.End = new DateTime(obj.End.Value.Year, obj.End.Value.Month, obj.End.Value.Day, 23, 59, 59);
+ db.Freey.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void FreeDelete(Free obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = FreeGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Отстранение не существует.");
+ using (var db = new MainDB())
+ {
+ db.Freey.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Free[] FreeList(int chelId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var free = (
+ from a in db.Freey
+ where a.ChelId == chelId
+ select a
+ ).ToArray();
+ return free;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Dictionary FreeListDays(int chelId, DateTime start, DateTime end)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var list =
+ from a in db.Freey
+ where
+ a.ChelId == chelId &&
+ a.Start <= end &&
+ (!a.End.HasValue || a.End.Value >= start)
+ select a;
+ var subres = new Dictionary();
+ foreach(var r in list)
+ {
+ var s = r.Start <= start ? start : r.Start;
+ var e = r.End.HasValue ?
+ r.End.Value >= end ? end :
+ r.End.Value :
+ end;
+ var d = (int)Math.Ceiling((e - s).TotalDays);
+ if (d <= 0)
+ continue;
+ if (!subres.ContainsKey("Общее"))
+ subres.Add("Общее", 0);
+ subres["Общее"] = subres["Общее"] + d;
+ if (!subres.ContainsKey(r.Type))
+ subres.Add(r.Type, 0);
+ subres[r.Type] = subres[r.Type] + d;
+ }
+ return subres;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] FreeListTable(int chelId, DateTime? start = null, DateTime? end = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var list =
+ from a in db.Freey
+ where
+ a.ChelId == chelId &&
+ (!end.HasValue || a.Start <= end.Value) &&
+ (!a.End.HasValue || !start.HasValue || a.End.Value >= start.Value)
+ select a;
+ var subres = new List();
+ foreach (var r in list)
+ {
+ var s = !start.HasValue ? r.Start :
+ r.Start <= start ? start.Value : r.Start;
+ var e = r.End.HasValue ?
+ end.HasValue ?
+ r.End.Value >= end ? end.Value :
+ r.End.Value :
+ end.Value :
+ DateTime.Now;
+ subres.Add(
+ new string[]{
+ r.Id.ToString(),
+ r.Type,
+ s.ToString("yyyy.MM.dd"),
+ e.ToString("yyyy.MM.dd"),
+ Math.Ceiling((e - s).TotalDays).ToString()
+ });
+ }
+ return subres.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/DataBase/FuncDB.cs b/DataBase/FuncDB.cs
deleted file mode 100644
index ef5bb73..0000000
--- a/DataBase/FuncDB.cs
+++ /dev/null
@@ -1,340 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-
-namespace Diplom_O.DataBase
-{
- public static class FuncDB
- {
- public static void ChkShtat(Shtat obj)
- {
- try
- {
- if (string.IsNullOrEmpty(obj.Doljnost)) throw new Exception("Пустая должность.");
- if (obj.Size <= 0) throw new Exception("Количество мест <= 0.");
- }
- catch { throw; }
- }
- public static Shtat GetShtat(int id)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = from a in db.Shtat
- where a.Id == id
- select a;
- try { return res.Single(); }
- catch { return null; }
- }
- }
- catch { throw; }
- }
- public static (Shtat shtat, int ost)[] ListShtat(string filter = null)
- {
- try
- {
- using (var db = new MainDB())
- {
- var f = (string.IsNullOrEmpty(filter)) ? "" : filter.ToLower();
- var shtat = (string.IsNullOrEmpty(f)) ?
- (from a in db.Shtat
- where a.Active
- select a).ToArray() :
- (from a in db.Shtat
- where a.Doljnost.ToLower().Contains(f) && a.Active
- select a).ToArray();
- var res = new List<(Shtat shtat, int ost)>();
- for (var i = 0; i < shtat.Length; i++)
- res.Add((shtat[i], shtat[i].Size - BusySizeShtat(shtat[i].Id)));
- return res.ToArray();
- }
- }
- catch { throw; }
- }
- public static void AddShtat(Shtat obj)
- {
- try
- {
- ChkShtat(obj);
- if (HaveDoljFromShtat(obj.Doljnost)) throw new Exception("Должность существует.");
- using (var db = new MainDB())
- {
- obj.Active = true;
- db.Shtat.Add(obj);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static void ChangeShtat(Shtat obj)
- {
- try
- {
- ChkShtat(obj);
- if (GetShtat(obj.Id) == null) throw new Exception("Должность не существует.");
- if (GetShtat(obj.Id).Doljnost != obj.Doljnost && HaveDoljFromShtat(obj.Doljnost)) throw new Exception("Должность существует.");
- if (obj.Size < BusySizeShtat(obj.Id)) throw new Exception("Занятых мест больше > указанных.");
- using (var db = new MainDB())
- {
- db.Shtat.Update(obj);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static void DelShtat(Shtat obj)
- {
- try
- {
- ChkShtat(obj);
- if (GetShtat(obj.Id) == null) throw new Exception("Должность не существует.");
- if (BusySizeShtat(obj.Id) > 0) throw new Exception("Есть занятые места.");
- obj.Active = false;
- using (var db = new MainDB())
- {
- db.Shtat.Update(obj);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static int BusySizeShtat(int id)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = (from a in db.Rabotniky
- where a.ShtatId == id && !a.End.HasValue
- select a).ToArray();
- return res.Length;
- }
- }
- catch { throw; }
- }
- public static bool HaveDoljFromShtat(string dolj)
- {
- try
- {
- using (var db = new MainDB())
- {
- var chkDolj = from a in db.Shtat
- where a.Doljnost == dolj && a.Active
- select a;
- return chkDolj.Count() > 0;
- }
- }
- catch { throw; }
- }
-
- public static void ChkChel(Chel chel)
- {
- try
- {
- if (string.IsNullOrEmpty(chel.FName)) throw new Exception("Фамилия не указана.");
- if (string.IsNullOrEmpty(chel.SName)) throw new Exception("Имя не указано.");
- if (chel.Birthday > DateTime.Now) throw new Exception("Дата рождения не верна.");
- var rgx = new Regex("^[0-9]{12}$");
- if (!rgx.IsMatch(chel.INN)) throw new Exception("ИНН указан неверно.");
- rgx = new Regex("^[0-9]{3}-[0-9]{3}-[0-9]{3} [0-9]{2}$");
- if (!rgx.IsMatch(chel.SNILS)) throw new Exception("СНИЛС указан неверно.");
- }
- catch { throw; }
- }
- public static Chel GetChel(int id)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = from a in db.Chely
- where a.Id == id
- select a;
- try { return res.Single(); }
- catch { return null; }
- }
- }
- catch { throw; }
- }
- public static Chel[] ListChel(string filter = null)
- {
- try
- {
- using (var db = new MainDB())
- {
- var f = (string.IsNullOrEmpty(filter)) ? "" : filter.ToLower();
- return (string.IsNullOrEmpty(f)) ?
- (from a in db.Chely
- select a).ToArray() :
- (from a in db.Chely
- where
- (!string.IsNullOrEmpty(a.FName) && a.FName.ToLower().Contains(f)) ||
- (!string.IsNullOrEmpty(a.SName) && a.SName.ToLower().Contains(f)) ||
- (!string.IsNullOrEmpty(a.TName) && a.TName.ToLower().Contains(f)) ||
- a.Birthday.ToString("yyyy.MM.dd").ToLower().Contains(f) ||
- (!string.IsNullOrEmpty(a.Address) && a.Address.ToLower().Contains(f)) ||
- (!string.IsNullOrEmpty(a.INN) && a.INN.ToLower().Contains(f)) ||
- (!string.IsNullOrEmpty(a.SNILS) && a.SNILS.ToLower().Contains(f)) ||
- (!string.IsNullOrEmpty(a.Pasport) && a.Pasport.ToLower().Contains(f))
- select a).ToArray();
- }
- }
- catch { throw; }
- }
- public static bool HaveChelRabotnik(int id, bool all=false)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = (from a in db.Rabotniky
- where a.ChelId == id && (all || !a.End.HasValue)
- select a).ToArray();
- return res.Length > 0;
- }
- }
- catch { throw; }
- }
- public static void AddChel(Chel chel)
- {
- try
- {
- ChkChel(chel);
- using (var db = new MainDB())
- {
- db.Chely.Add(chel);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static void ChangeChel(Chel chel)
- {
- try
- {
- ChkChel(chel);
- if (GetChel(chel.Id) == null) throw new Exception("Человека не существует.");
- using (var db = new MainDB())
- {
- db.Chely.Update(chel);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static void DelChel(Chel chel)
- {
- try
- {
- ChkChel(chel);
- if (GetChel(chel.Id) == null) throw new Exception("Человека не существует.");
- if (HaveChelRabotnik(chel.Id, true)) throw new Exception("Человек есть в таблице работников.");
- using (var db = new MainDB())
- {
- db.Chely.Remove(chel);
- db.SaveChanges();
- }
- }
- catch { throw; }
- }
- public static bool HaveChelToChel(int id)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = (from a in db.ChelToChely
- where a.Chel1Id == id || a.Chel2Id == id
- select a).Count();
- return res > 0;
- }
- }
- catch { throw; }
- }
- public static bool CanBirthdayChelToChel(int id, DateTime date)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = (from a in db.ChelToChely
- join b in db.Chely on a.Chel2Id equals b.Id
- join c in db.Chely on a.Chel1Id equals c.Id
- where (a.Chel1Id == id && date > b.Birthday) ||
- (a.Chel2Id == id && date < c.Birthday)
- select a).Count();
- return res == 0;
- }
- }
- catch { throw; }
- }
- public static (int chelToChelId, Chel chel, int lvl)[] ListRodFromChel(int id)
- {
- try
- {
- var rodChel = new List<(int chelToChelId, Chel chel, int lvl)>();
- using (var db = new MainDB())
- {
- var parents = new List<(Chel chel,int lvl)>() { (GetChel(id), 0) };
- var childrens = new List<(Chel chel, int lvl)>() { (GetChel(id), 0) };
- while (parents.Count > 0 || childrens.Count > 0)
- {
- var newParents = new List<(Chel chel, int lvl)>();
- var newChildrens = new List<(Chel chel, int lvl)>();
- for(var i = 0; i < parents.Count || i < childrens.Count; i++)
- {
- var parentsLinks =
- (from a in db.ChelToChely
- where (i < parents.Count) && a.Chel2Id == parents[i].chel.Id
- select a).ToArray();
- var childrensLinks =
- (from a in db.ChelToChely
- where (i < childrens.Count) && a.Chel1Id == childrens[i].chel.Id
- select a).ToArray();
- for (var j = 0; j < parentsLinks.Length || j < childrensLinks.Length; j++)
- {
- var chel = j < parentsLinks.Length ? GetChel(parentsLinks[j].Chel1Id) : null;
- if (chel != null && rodChel.FindAll(x => x.chel.Id == chel.Id).Count == 0)
- {
- rodChel.Add((parentsLinks[j].Id, chel, parents[i].lvl - parentsLinks[j].Lvl));
- newParents.Add((chel, parents[i].lvl - parentsLinks[j].Lvl));
- }
-
- chel = j < childrensLinks.Length ? GetChel(childrensLinks[j].Chel2Id) : null;
- if (chel != null && rodChel.FindAll(x => x.chel.Id == chel.Id).Count == 0)
- {
- rodChel.Add((childrensLinks[j].Id, chel, childrens[i].lvl + childrensLinks[j].Lvl));
- newChildrens.Add((chel, childrens[i].lvl + childrensLinks[j].Lvl));
- }
- }
- }
- parents = newParents;
- childrens = newChildrens;
- }
- }
- return rodChel.OrderByDescending(x => x.lvl).ToArray();
- }
- catch { throw; }
- }
-
- public static ChelToChel GetChelToChel(int id)
- {
- try
- {
- using (var db = new MainDB())
- {
- var res = from a in db.ChelToChely
- where a.Id == id
- select a;
- try { return res.Single(); }
- catch { return null; }
- }
- }
- catch { throw; }
- }
- }
-}
diff --git a/DataBase/LearnDB.cs b/DataBase/LearnDB.cs
new file mode 100644
index 0000000..4dccbf4
--- /dev/null
+++ b/DataBase/LearnDB.cs
@@ -0,0 +1,182 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Learn
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("Chel")]
+ public int ChelId { get; set; }
+ public Chel Chel { get; set; }
+ public string NameSchool { get; set; }
+ public string Type { get; set; }
+ public string Spec { get; set; }
+ public string Curs { get; set; }
+ public string ProfPer { get; set; }
+ public DateTime End { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void LearnCheckValid(Learn obj)
+ {
+ try
+ {
+ if (obj == null) throw new Exception("Ошибка инициализации.");
+ if (ChelGetById(obj.ChelId) == null) throw new Exception("Человек не указан.");
+ if (string.IsNullOrEmpty(obj.NameSchool)) throw new Exception("Обр. учр. не указано.");
+ if (string.IsNullOrEmpty(obj.Type)) throw new Exception("Уровень не указан.");
+ if (string.IsNullOrEmpty(obj.Spec)) throw new Exception("Специальность не указана.");
+ }
+ catch { throw; }
+ }
+ public static Learn LearnGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Learny
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void LearnAdd(Learn obj)
+ {
+ try
+ {
+ LearnCheckValid(obj);
+
+ using (var db = new MainDB())
+ {
+ db.Learny.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void LearnChange(Learn obj)
+ {
+ try
+ {
+ LearnCheckValid(obj);
+ var localObj = LearnGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Образование не указано.");
+ using (var db = new MainDB())
+ {
+ db.Learny.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void LearnDelete(Learn obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = LearnGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Образование не существует.");
+ using (var db = new MainDB())
+ {
+ db.Learny.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Learn[] LearnList(int chelId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var learns = (
+ from a in db.Learny
+ where a.ChelId == chelId
+ select a
+ ).ToArray();
+ return learns;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static string[][] LearnListTableMain(int chelId)
+ {
+ try
+ {
+ return LearnListTableMain(LearnList(chelId));
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] LearnListTableMain(Learn[] data)
+ {
+ try
+ {
+ var result = new List();
+ foreach (var learn in data)
+ result.Add(
+ new string[]
+ {
+ learn.Id.ToString(),
+ learn.NameSchool,
+ learn.Type,
+ learn.Spec,
+ learn.End.ToString("yyyy.MM.dd"),
+ learn.Curs,
+ learn.ProfPer
+ }
+ );
+ return result.ToArray();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/DataBase/RabotinkDB.cs b/DataBase/RabotinkDB.cs
new file mode 100644
index 0000000..8dd4247
--- /dev/null
+++ b/DataBase/RabotinkDB.cs
@@ -0,0 +1,448 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class Rabotnik
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [ForeignKey("Chel")]
+ public int ChelId { get; set; }
+ public Chel Chel { get; set; }
+ [ForeignKey("Shtat")]
+ public int? ShtatId { get; set; }
+ public Shtat Shtat { get; set; }
+ public string TabNum { get; set; }
+ public bool AnotherWork { get; set; }
+ public DateTime Start { get; set; }
+ public DateTime? End { get; set; }
+ public List RabotnikTypeStajy { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void RabotnikCheckValid(Rabotnik obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации сотрудника.");
+ if (string.IsNullOrEmpty(obj.TabNum) && !obj.AnotherWork)
+ throw new Exception("Пустой табельный номер.");
+ if (
+ obj.Start > (obj.End.HasValue ? obj.End.Value : DateTime.Now)
+ )
+ throw new Exception("Неверная дата.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Rabotnik RabotnikGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Rabotniky
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static Rabotnik[] RabotnikHistoryById(int id)
+ {
+ try
+ {
+ var rabotnik = RabotnikGetById(id);
+ RabotnikCheckValid(rabotnik);
+ return
+ RabotnikHistoryByChelId(
+ rabotnik.ChelId
+ );
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Rabotnik[] RabotnikHistoryByRabotingId(Rabotnik obj)
+ {
+ try
+ {
+ RabotnikCheckValid(obj);
+ return RabotnikHistoryByChelId(
+ obj.ChelId
+ );
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Rabotnik[] RabotnikHistoryByChelId(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Rabotniky
+ where a.ChelId == id
+ orderby a.Start
+ select a;
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static bool RabotnikCheckDate(int chelId, DateTime start, DateTime? end, int rabotnikId = -1)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var now = DateTime.Now;
+ var _end = end ?? now;
+ return (
+ from a in db.Rabotniky
+ where
+ a.ChelId == chelId
+ &&
+ (rabotnikId != -1 ? a.Id != rabotnikId : true)
+ &&
+ (
+ (
+ a.Start >= start
+ &&
+ a.Start <= _end
+ )
+ ||
+ (
+ (a.End ?? now) >= start
+ &&
+ (a.End ?? now) <= _end
+ )
+ )
+ select a
+ ).Count() == 0;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void RabotnikAdd(Rabotnik obj)
+ {
+ try
+ {
+ RabotnikCheckValid(obj);
+ if (!RabotnikCheckDate(obj.ChelId, obj.Start, obj.End))
+ throw new Exception("Попадает в существующий временной интервал.");
+ using (var db = new MainDB())
+ {
+ db.Rabotniky.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void RabotnikChange(Rabotnik obj)
+ {
+ try
+ {
+ RabotnikCheckValid(obj);
+ var localObjById = RabotnikGetById(obj.Id);
+ if (localObjById == null)
+ throw new Exception("Не существует запись о сотруднике.");
+ if (obj.ChelId != localObjById.ChelId)
+ throw new Exception("Нельзя менять человека.");
+ if (!RabotnikCheckDate(obj.ChelId, obj.Start, obj.End, obj.Id))
+ throw new Exception("Пересекатеся с другими записями о работе.");
+ /*if (ShtatGetById(obj.ShtatId) == null)
+ throw new Exception("Должность не существует.");*/
+ if (Program.IsDebug)
+ throw new Exception("НАДО ДОРАБОТАТЬ ПРОВЕРКУ ЗАПОЛНЕНИЯ ДОЛЖНОСТЕЙ");
+ using (var db = new MainDB())
+ {
+ db.Rabotniky.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void RabotnikDelete(Rabotnik obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = RabotnikGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Запись о сотруднике не существует.");
+ using (var db = new MainDB())
+ {
+ var type = FuncDB.RabotnikTypeStajList(obj.Id);
+ foreach (var r in type)
+ FuncDB.RabotnikTypeStajDelete(r);
+ db.Rabotniky.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Rabotnik[] RabotnikList(string filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var _filter = string.IsNullOrEmpty(filter) ? null : filter.ToLower();
+ var rabotnik = (
+ from a in db.Rabotniky
+ select a
+ );
+ return rabotnik.ToArray();
+
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Rabotnik[] RabotnikListLast(string filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var _chel = FuncDB.ChelList();
+ var rabotnik = new List();
+ var _filter = string.IsNullOrEmpty(filter) ? null : filter.ToLower();
+ foreach (var c in _chel)
+ {
+ var rab = (
+ from a in db.Rabotniky
+ where a.End == null && a.ChelId == c.Id
+ select a
+ ).ToArray();
+ if (rab.Length == 0)
+ {
+ rab = (
+ from a in db.Rabotniky
+ where a.ChelId == c.Id
+ orderby a.End descending
+ select a
+ ).ToArray();
+ }
+ if (rab.Length > 0)
+ rabotnik.Add(rab[0]);
+ }
+ return rabotnik.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Rabotnik[] RabotnikListByChelId(int chelId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var rabotnik = (
+ from a in db.Rabotniky
+ where a.ChelId == chelId
+ orderby a.Start
+ select a
+ );
+ return rabotnik.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static string[][] RabotnikTableMain(string filter = null)
+ {
+ try
+ {
+ return RabotnikTableMain(RabotnikListLast(filter));
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] RabotnikTableMain(Rabotnik[] data)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var result = new List();
+ foreach (var rabotnik in data)
+ {
+ result.Add(
+ new string[]
+ {
+ rabotnik.Id.ToString(),
+ rabotnik.TabNum,
+ ChelGetFIOShortById(rabotnik.ChelId),
+ rabotnik.AnotherWork ?
+ "Иное место" :
+ ShtatGetById(rabotnik.ShtatId.Value).Doljnost
+ }
+ );
+ }
+ return result.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+
+ }
+ public static string[][] RabotnikByChelIdTable(int chelId)
+ {
+ try
+ {
+ return RabotnikByChelIdTable(RabotnikListByChelId(chelId));
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] RabotnikByChelIdTable(Rabotnik[] data)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var result = new List();
+ foreach (var rabotnik in data)
+ {
+ result.Add(
+ new string[]
+ {
+ rabotnik.Id.ToString(),
+ rabotnik.TabNum,
+ rabotnik.AnotherWork ?
+ "Иное место" :
+ ShtatGetById(rabotnik.ShtatId.Value).Doljnost,
+ rabotnik.Start.ToString("yyyy.MM.dd"),
+ rabotnik.End.HasValue ? rabotnik.End.Value.ToString("yyyy.MM.dd") : "По настоящее время"
+ }
+ );
+ }
+ return result.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static (int year, int month, int day) RabotnikGetTotalTime(Rabotnik obj, DateTime? onDate = null)
+ {
+ if (!onDate.HasValue)
+ onDate = DateTime.Now;
+ var year = 0;
+ var month = 0;
+ var day = 0;
+
+ if (obj == null)
+ return (year, month, day);
+ var cursor =
+ obj.End.HasValue ?
+ obj.End.Value <= onDate ?
+ obj.End.Value :
+ onDate.Value :
+ onDate.Value;
+ var finish = obj.Start;
+ if (cursor <= finish)
+ return (year, month, day);
+ while (finish.Year < cursor.Year)
+ {
+ year++;
+ cursor = cursor.AddYears(-1);
+ }
+ if (finish.Month > cursor.Month)
+ {
+ year--;
+ cursor = cursor.AddYears(1);
+ }
+ while (finish.Month != cursor.Month)
+ {
+ month++;
+ cursor = cursor.AddMonths(-1);
+ }
+ if (finish.Day > cursor.Day)
+ {
+ month--;
+ cursor = cursor.AddMonths(1);
+ }
+ while (finish.Day != cursor.Day)
+ {
+ day++;
+ cursor = cursor.AddDays(-1);
+ }
+ while (day < 0)
+ {
+ day += 30;
+ month--;
+ }
+
+ while (month < 0)
+ {
+ month += 12;
+ year--;
+ }
+ return (year, month, day);
+ }
+ }
+}
diff --git a/DataBase/RabotnikTypeStajDB.cs b/DataBase/RabotnikTypeStajDB.cs
new file mode 100644
index 0000000..411a3d7
--- /dev/null
+++ b/DataBase/RabotnikTypeStajDB.cs
@@ -0,0 +1,188 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class RabotnikTypeStaj
+ {
+ public int Id { get; set; }
+ [ForeignKey("Rabotnik")]
+ public int RabitnikId { get; set; }
+ [ForeignKey("TypeStaj")]
+ public int TypeStajId { get; set; }
+ }
+ public static partial class FuncDB
+ {
+ public static void RabotnikTypeStajCheckValid(RabotnikTypeStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации стажа сотрудника.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static RabotnikTypeStaj RabotnikTypeStajGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.RabotnikTypeStajy
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static RabotnikTypeStaj RabotnikTypeStajGetByTypeStajIdRabotnikId(int typeStajId, int rabotnikId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.RabotnikTypeStajy
+ where a.RabitnikId == rabotnikId &&
+ a.TypeStajId == typeStajId
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void RabotnikTypeStajAdd(RabotnikTypeStaj obj)
+ {
+ try
+ {
+ RabotnikTypeStajCheckValid(obj);
+ if (RabotnikTypeStajGetByTypeStajIdRabotnikId(obj.TypeStajId, obj.RabitnikId) != null )
+ throw new Exception("Тип стажа сотрудника существует.");
+ using (var db = new MainDB())
+ {
+ db.RabotnikTypeStajy.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void RabotnikTypeStajDelete(RabotnikTypeStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = RabotnikTypeStajGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Тип стажа сотрудника не существует.");
+ using (var db = new MainDB())
+ {
+ db.RabotnikTypeStajy.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static RabotnikTypeStaj[] RabotnikTypeStajList(int rabId)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res = (
+ from a in db.RabotnikTypeStajy
+ where a.RabitnikId == rabId
+ select a
+ ).ToList();
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] RabotnikTypeStajListString(int rabId)
+ {
+ try
+ {
+ var rts = RabotnikTypeStajList(rabId);
+ var res = new List();
+ foreach (var r in rts)
+ {
+ res.Add(
+ new string[]
+ {
+ r.Id.ToString(),
+ TypeStajGetById(r.TypeStajId).Name
+ }
+ );
+ }
+ return res.ToArray();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static RabotnikTypeStaj[] RabotnikTypeStajListByTypeStaj(int typeStaj)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res = (
+ from a in db.RabotnikTypeStajy
+ where a.TypeStajId == typeStaj
+ select a
+ ).ToList();
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+
+ }
+}
diff --git a/DataBase/ShtatDB.cs b/DataBase/ShtatDB.cs
new file mode 100644
index 0000000..26330f1
--- /dev/null
+++ b/DataBase/ShtatDB.cs
@@ -0,0 +1,310 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.EntityFrameworkCore;
+
+namespace Diplom_O.DataBase
+{
+ public class Shtat
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string Doljnost { get; set; }
+ public int Size { get; set; }
+ public bool Active { get; set; }
+ public List Rabotniky { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void ShtatCheckValid(Shtat obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации должности.");
+ if (string.IsNullOrEmpty(obj.Doljnost))
+ throw new Exception("Пустая должность.");
+ if (obj.Size <= 0)
+ throw new Exception("Количество мест <= 0.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ private static void ShtatClear()
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var shtat = (
+ from a in db.Shtat
+ where !a.Active
+ select a).ToArray();
+ for (var i = 0; i < shtat.Length; i++)
+ if(ShtatFreeSpaceByShtat(shtat[i]) == shtat[i].Size)
+ {
+ db.Shtat.Remove(shtat[i]);
+ db.SaveChanges();
+ }
+ }
+ }
+ catch
+ {
+ return;
+ }
+ }
+
+ public static Shtat ShtatGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Shtat
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static Shtat ShtatGetByDoljnost(string doljnost)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var chkDolj =
+ from a in db.Shtat
+ where a.Doljnost == doljnost && a.Active
+ select a;
+ try
+ {
+ return chkDolj.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static int ShtatFreeSpaceById(int id)
+ {
+ try
+ {
+ return
+ ShtatFreeSpaceByShtat(
+ ShtatGetById(id)
+ );
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static int ShtatFreeSpaceByShtat(Shtat obj)
+ {
+ try
+ {
+ ShtatCheckValid(obj);
+ using (var db = new MainDB())
+ {
+ var now = DateTime.Now;
+ var res = (
+ from a in db.Rabotniky
+ where
+ a.ShtatId == obj.Id
+ &&
+ (
+ !a.End.HasValue
+ ||
+ (
+ now >= a.Start
+ &&
+ now <= a.End.Value
+ )
+ )
+ select a).Count();
+ return obj.Size - res;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void ShtatAdd(Shtat obj)
+ {
+ try
+ {
+ ShtatCheckValid(obj);
+ if (ShtatGetByDoljnost(obj.Doljnost) != null)
+ throw new Exception("Должность существует.");
+ using (var db = new MainDB())
+ {
+ obj.Active = true;
+ db.Shtat.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ShtatChange(Shtat obj)
+ {
+ try
+ {
+ ShtatCheckValid(obj);
+ var localObjById = ShtatGetById(obj.Id);
+ var localObjByDoljnost = ShtatGetByDoljnost(obj.Doljnost);
+ if (localObjById == null)
+ throw new Exception("Должность не существует.");
+ if (localObjByDoljnost != null &&
+ localObjByDoljnost != localObjById)
+ throw new Exception("Должность существует.");
+ if (localObjById.Size - ShtatFreeSpaceByShtat(localObjById) > obj.Size )
+ throw new Exception("Занятых мест больше > указанных.");
+ using (var db = new MainDB())
+ {
+ db.Shtat.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void ShtatDelete(Shtat obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = ShtatGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Должность не существует.");
+ if (ShtatFreeSpaceByShtat(localObj) != localObj.Size)
+ throw new Exception("Есть занятые места.");
+ localObj.Active = false;
+ using (var db = new MainDB())
+ {
+ db.Shtat.Update(localObj);
+ db.SaveChanges();
+ }
+ ShtatClear();
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static (Shtat shtat, int free)[] ShtatList(string filter = null, bool isActual = false)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var shtat = (
+ from a in db.Shtat
+ where a.Active
+ select a
+ ).ToList();
+ var res = new List<(Shtat shtat, int free)>();
+ for (var i = 0; i < shtat.Count; i++)
+ {
+ var free = ShtatFreeSpaceByShtat(shtat[i]);
+ if (isActual && free <= 0)
+ continue;
+ res.Add((
+ shtat[i],
+ free
+ ));
+ }
+
+ if (string.IsNullOrEmpty(filter))
+ return res.ToArray();
+
+ filter = filter.ToLower();
+ for (var i = 0; i < res.Count;)
+ {
+ var dolj = res[i].shtat.Doljnost.ToLower();
+ if (!dolj.Contains(filter))
+ res.RemoveAt(i);
+ else
+ i++;
+ }
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] ShtatListTableMain(string filter = null, bool isActual = false)
+ {
+ try
+ {
+ return ShtatListTableMain(ShtatList(filter, isActual));
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] ShtatListTableMain((Shtat shtat, int free)[] data)
+ {
+ try
+ {
+ var result = new List();
+ foreach (var (shtat, free) in data)
+ result.Add(
+ new string[]
+ {
+ shtat.Id.ToString(),
+ shtat.Doljnost,
+ shtat.Size.ToString(),
+ free.ToString()
+ }
+ );
+ return result.ToArray();
+ }
+ catch
+ {
+ throw;
+ }
+
+ }
+
+
+ }
+}
diff --git a/DataBase/TypeStajDB.cs b/DataBase/TypeStajDB.cs
new file mode 100644
index 0000000..cb6604e
--- /dev/null
+++ b/DataBase/TypeStajDB.cs
@@ -0,0 +1,194 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class TypeStaj
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public List CorrStajy { get; set; }
+ public List RabotnikTypeStajy { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void TypeStajCheckValid(TypeStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ throw new Exception("Ошибка инициализации стажа.");
+ if (string.IsNullOrEmpty(obj.Name))
+ throw new Exception("Пустой стаж.");
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static TypeStaj TypeStajGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.TypeStajy
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static TypeStaj TypeStajGetByName(string name)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var chkTypeStaj =
+ from a in db.TypeStajy
+ where a.Name == name
+ select a;
+ try
+ {
+ return chkTypeStaj.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static void TypeStajAdd(TypeStaj obj)
+ {
+ try
+ {
+ TypeStajCheckValid(obj);
+ if (TypeStajGetByName(obj.Name) != null)
+ throw new Exception("Тип стажа существует.");
+ using (var db = new MainDB())
+ {
+ db.TypeStajy.Add(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void TypeStajChange(TypeStaj obj)
+ {
+ try
+ {
+ TypeStajCheckValid(obj);
+ var localObjById = TypeStajGetById(obj.Id);
+ var localObjByName = TypeStajGetByName(obj.Name);
+ if (localObjById == null)
+ throw new Exception("Тип стажа не существует.");
+ if (localObjByName != null &&
+ localObjByName != localObjById)
+ throw new Exception("Тип стажа существует.");
+ using (var db = new MainDB())
+ {
+ db.TypeStajy.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void TypeStajDelete(TypeStaj obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = TypeStajGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Тип стажа не существует.");
+ if (RabotnikTypeStajListByTypeStaj(localObj.Id).Length > 0)
+ throw new Exception("Тип стажа используется.");
+ using (var db = new MainDB())
+ {
+ db.TypeStajy.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static TypeStaj[] TypeStajList(int[] filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res = (
+ from a in db.TypeStajy
+ where filter == null || filter.Contains(a.Id)
+ select a
+ ).ToList();
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[] TypeStajListString(int[] filter = null)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res = (
+ from a in db.TypeStajy
+ where filter == null || filter.Contains(a.Id)
+ select a.Name
+ ).ToList();
+ res.Remove("Общий");
+ return res.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ }
+
+
+}
diff --git a/DataBase/UserDB.cs b/DataBase/UserDB.cs
new file mode 100644
index 0000000..1ff06a0
--- /dev/null
+++ b/DataBase/UserDB.cs
@@ -0,0 +1,209 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+
+namespace Diplom_O.DataBase
+{
+ public class User
+ {
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string Login { get; set; }
+ public string Pass { get; set; }
+ public bool Hide { get; set; }
+ public int Default { get; set; }
+ public List Accessy { get; set; }
+ }
+
+ public static partial class FuncDB
+ {
+ public static void UserCheckValid(User obj)
+ {
+ try
+ {
+ if (obj == null) throw new Exception("Ошибка инициализации.");
+ if (string.IsNullOrEmpty(obj.Login)) throw new Exception("Логин не указан.");
+ if (string.IsNullOrEmpty(obj.Pass)) throw new Exception("Пароль не указан.");
+ if (obj.Default < 0 || obj.Default > 7) throw new Exception("Форма не существует.");
+ }
+ catch { throw; }
+ }
+ public static User UserGetById(int id)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Usery
+ where a.Id == id
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static User UserGetByLogin(string login)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var res =
+ from a in db.Usery
+ where a.Login == login
+ select a;
+ try
+ {
+ return res.Single();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+ }
+ catch
+ {
+ throw;
+ }
+
+ }
+ public static void UserAdd(User obj)
+ {
+ try
+ {
+ UserCheckValid(obj);
+ if (UserGetByLogin(obj.Login) != null)
+ throw new Exception("Пользователь существует.");
+ using (var db = new MainDB())
+ {
+ db.Usery.Add(obj);
+ db.SaveChanges();
+ }
+ var user = UserGetByLogin(obj.Login);
+ for (var i = 0; i < FormArray.formAccess.Length; i++)
+ {
+ var access = new Access()
+ {
+ UserId = user.Id,
+ FormId = user.Default,
+ FormatAccess = i
+ };
+ AccessAdd(access);
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void UserChange(User obj)
+ {
+ try
+ {
+ UserCheckValid(obj);
+ var localObj = UserGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Пользователь не указан.");
+ var localObjByLogin = UserGetByLogin(obj.Login);
+ if (localObjByLogin != null &&
+ localObjByLogin.Id != localObj.Id)
+ throw new Exception("Логин существует.");
+ if (AccessGetByUserIdFormIdAccessId(localObj.Id, obj.Default, 0) == null)
+ throw new Exception("Сначала нужен доступ к форме.");
+ using (var db = new MainDB())
+ {
+ db.Usery.Update(obj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static void UserDelete(User obj)
+ {
+ try
+ {
+ if (obj == null)
+ return;
+ var localObj = UserGetById(obj.Id);
+ if (localObj == null)
+ throw new Exception("Пользователь не существует.");
+ var acessy = AccessList(localObj.Id);
+ foreach (var a in acessy)
+ AccessDelete(a);
+ using (var db = new MainDB())
+ {
+ db.Usery.Remove(localObj);
+ db.SaveChanges();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+
+ public static User[] UserList(bool showHide = false)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var user = (
+ from a in db.Usery
+ where (showHide || !a.Hide)
+ select a
+ ).ToArray();
+ return user;
+ }
+ }
+ catch
+ {
+ throw;
+ }
+ }
+ public static string[][] UserListTable(bool showHide = false)
+ {
+ try
+ {
+ using (var db = new MainDB())
+ {
+ var list = UserList(showHide);
+ var subres = new List();
+ foreach (var r in list)
+ {
+ subres.Add(
+ new string[]{
+ r.Login
+ });
+ }
+ return subres.ToArray();
+ }
+ }
+ catch
+ {
+ throw;
+ }
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Diplom O.csproj b/Diplom O.csproj
index d4873b8..3755f2e 100644
--- a/Diplom O.csproj
+++ b/Diplom O.csproj
@@ -14,6 +14,21 @@
true
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
AnyCPU
@@ -255,6 +270,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
Form
@@ -262,13 +289,42 @@
ChelForm.cs
-
+
+ Form
+
+
+ LoginForm.cs
+
+
+ Form
+
+
+ SettingsForm.cs
+
Form
OtpForm.cs
+
+ Form
+
+
+ LearnForm.cs
+
+
+ Form
+
+
+ StajForm.cs
+
+
+ Form
+
+
+ ChildForm.cs
+
Form
@@ -283,11 +339,35 @@
-
+
Form
-
- SelectChelForm.cs
+
+ LoginForm.cs
+
+
+ Form
+
+
+ ChildForm.cs
+
+
+ Form
+
+
+ OptForm.cs
+
+
+ Form
+
+
+ LearnForm.cs
+
+
+ Form
+
+
+ WorkerForm.cs
Form
@@ -304,6 +384,27 @@
ChelForm.cs
+
+ LoginForm.cs
+
+
+ SettingsForm.cs
+
+
+ OtpForm.cs
+
+
+ LearnForm.cs
+
+
+ StajForm.cs
+
+
+ ChildForm.cs
+
+
+ RabForm.cs
+
ShtatForm.cs
@@ -316,8 +417,20 @@
True
Resources.resx
-
- SelectChelForm.cs
+
+ LoginForm.cs
+
+
+ ChildForm.cs
+
+
+ OptForm.cs
+
+
+ LearnForm.cs
+
+
+ WorkerForm.cs
WorkChelForm.cs
@@ -325,6 +438,16 @@
WorkShtatForm.cs
+
+
+
+
+
+
+
+
+
+
SettingsSingleFileGenerator
@@ -339,6 +462,18 @@
+
+
+ False
+ Microsoft .NET Framework 4.7.2 %28x86 и x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
diff --git a/Diplom O.csproj.user b/Diplom O.csproj.user
new file mode 100644
index 0000000..9d9e44c
--- /dev/null
+++ b/Diplom O.csproj.user
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+ ru-RU
+ false
+
+
\ No newline at end of file
diff --git a/Diplom O.sln b/Diplom O.sln
index 2ed3228..c5358e4 100644
--- a/Diplom O.sln
+++ b/Diplom O.sln
@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.31424.327
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Diplom O", "Diplom O.csproj", "{4AC6A26F-1F0F-40E0-AE87-AD533985C10D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestFunctons", "..\TestFunctons\TestFunctons.csproj", "{E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
{4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AC6A26F-1F0F-40E0-AE87-AD533985C10D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E484630E-D0A0-4DA8-B7D0-EB9E9A57CEAC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/GlobalFormFunc.cs b/GlobalFormFunc.cs
new file mode 100644
index 0000000..bfa70ac
--- /dev/null
+++ b/GlobalFormFunc.cs
@@ -0,0 +1,283 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public static class FormExtention
+ {
+ public static User user = null;
+ public static User GetUser(this Form form)
+ {
+ return user;
+ }
+ public static void SetUser(this Form form, User usr)
+ {
+ user = usr;
+ }
+
+ public static int nextForm = -1;
+ public static int GetNextForm(this Form form)
+ {
+ return nextForm;
+ }
+ public static void SetNextForm(this Form form, int value)
+ {
+ nextForm = value;
+ }
+
+ public static void correctUpperMenu(this Form form, MenuStrip upMenu, int value)
+ {
+ var items = upMenu.Items;
+ for (var i = 0; i < items.Count; i++)
+ {
+ if (user == null)
+ {
+ items[i].Enabled = false;
+ continue;
+ }
+ var access = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, i, 0);
+ if (access == null)
+ {
+ items[i].Enabled = false;
+ continue;
+ }
+ items[i].Enabled = (i != value);
+ }
+ }
+ public static void upperMenuClicked(this Form form, MenuStrip upMenu)
+ {
+ var menuItems = upMenu.Items;
+ for (var i = 0; i < menuItems.Count; i++)
+ if (menuItems[i].Selected)
+ nextForm = i;
+ }
+
+ private static int countErr = 0;
+ private static int currTurnErr = 0;
+ private static bool flagfollow = false;
+ public static async void ShowError(this Form form, ToolStripStatusLabel errorLabel, string msg = null)
+ {
+ try
+ {
+ int ticket = countErr;
+ countErr = (countErr == int.MaxValue) ? 0 : countErr + 1;
+ while (flagfollow && (currTurnErr != ticket))
+ await Task.Delay(1000);
+ Action func = () =>
+ {
+ errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
+ errorLabel.Visible = true;
+ };
+ if (form.InvokeRequired)
+ form.Invoke(func);
+ else
+ func.Invoke();
+ await Task.Delay(5000);
+ func = () =>
+ {
+ errorLabel.Visible = false;
+ };
+ if (currTurnErr == ticket)
+ if (form.InvokeRequired)
+ form.Invoke(func);
+ else
+ func.Invoke();
+ }
+ catch
+ {
+ return;
+ }
+ finally
+ {
+ currTurnErr = (currTurnErr == int.MaxValue) ? 0 : currTurnErr + 1;
+ }
+ }
+
+ private static int countFind = 0;
+ public delegate void resetTableFind();
+ public static async void FindOnChanged(this Form form, resetTableFind func)
+ {
+ var flag = ++countFind;
+ await Task.Delay(1000);
+ Action lFunc = () =>
+ {
+ func?.Invoke();
+ };
+ if (flag == countFind)
+ if (form.InvokeRequired)
+ form.Invoke(lFunc);
+ else
+ lFunc.Invoke();
+ }
+
+ public static async void ResetTable(this Form form, DataGridView table, ColumnConf[] columns, string[][] data)
+ {
+ try
+ {
+ var currSelected = new List<(int col, int row)>();
+ var tmpCells = table.SelectedCells;
+ for (var i = 0; i < tmpCells.Count; i++)
+ currSelected.Add((
+ tmpCells[i].ColumnIndex,
+ tmpCells[i].RowIndex
+ ));
+ ClearTable(form, table, columns);
+ FillTable(form, table, data);
+ for (var i = currSelected.Count - 1; i >= 0; i--)
+ {
+ var col = currSelected[i].col;
+ var row = currSelected[i].row;
+ if (row >= 0 && row < table.Rows.Count && col >= 0 && col < table.Columns.Count)
+ table[col, row].Selected = true;
+ }
+ }
+ catch
+ {
+ throw;
+ await Task.Delay(1000);
+ }
+ }
+ public static async void ClearTable(this Form form, DataGridView table, ColumnConf[] columns)
+ {
+ Action func = () =>
+ {
+ table.Rows.Clear();
+ table.Columns.Clear();
+ var c = table.Columns;
+ for (var i = 0; i < columns.Length; i++)
+ {
+ c.Add(columns[i].name, columns[i].name);
+ c[i].Width = columns[i].size;
+ if (columns[i].warp)
+ c[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
+ }
+ };
+ if (form.InvokeRequired)
+ form.Invoke(func);
+ else
+ func.Invoke();
+ return;
+ await Task.Delay(1000);
+ }
+ public static async void FillTable(this Form form, DataGridView table, string[][] data)
+ {
+ if (data == null || data.Length == 0)
+ return;
+ try
+ {
+ if (table.Columns.Count != data[0].Length)
+ throw new Exception("Количество элементов данных (" + data[0].Length +
+ ") не соответствует колчиству столбцов (" + table.Columns.Count + ")");
+ foreach (var lRow in data)
+ table.Rows.Add(lRow);
+ }
+ catch
+ {
+ throw;
+ await Task.Delay(1000);
+ }
+ }
+
+ }
+ public static class FormArray
+ {
+ public static readonly string[] formName = {
+ "Актуальные вакансии",
+ "Люди",
+ "Сотрудники",
+ "Стаж",
+ "Образование",
+ "Отпуск/Больничный",
+ "Дети",
+ "Настройки"
+ };
+ public static readonly string[] formAccess = {
+ "Чтение",
+ "Удаление",
+ "Изменение",
+ "Добавление"
+ };
+
+ public static int GetNameInt(string name)
+ {
+ var result = -1;
+ for (var i = 0; i < formName.Length; i++)
+ if (name.CompareTo(formName[i]) == 0)
+ result = i;
+ return result;
+ }
+ public static string GetNameString(int id)
+ {
+ var result = "Ошибка";
+ if (id >= 0 && id < formName.Length)
+ result = formName[id];
+ return result;
+ }
+ public static int GetAccessInt(string name)
+ {
+ var result = -1;
+ for (var i = 0; i < formAccess.Length; i++)
+ if (name.CompareTo(formAccess[i]) == 0)
+ result = i;
+ return result;
+ }
+ public static string GetAccessString(int id)
+ {
+ var result = "Ошибка";
+ if (id >= 0 && id < formAccess.Length)
+ result = formAccess[id];
+ return result;
+ }
+ }
+ public static class TableColumnssss
+ {
+ public static readonly ColumnConf Id = new ColumnConf(name: "№");
+ public static readonly ColumnConf Free = new ColumnConf(name: "Своб.");
+ public static readonly ColumnConf KolVo = new ColumnConf(name: "Кол-во");
+ public static readonly ColumnConf Male = new ColumnConf(name: "Пол");
+
+ public static readonly ColumnConf TabNum = new ColumnConf(name: "Таб. №", size: 80);
+ public static readonly ColumnConf BDay = new ColumnConf(name: "Дата рождения", size: 80);
+ public static readonly ColumnConf INN = new ColumnConf(name: "ИНН", size: 100);
+ public static readonly ColumnConf SNILS = new ColumnConf(name: "СНИЛС", size: 100);
+ public static readonly ColumnConf Dolj = new ColumnConf(name: "Должность", size: 140);
+ public static readonly ColumnConf TypeStaj = new ColumnConf(name: "Тип стажа", size: 140);
+ public static readonly ColumnConf FIO = new ColumnConf(name: "Фамилия И.О.", size: 140);
+
+ public static readonly ColumnConf Adress = new ColumnConf(name: "Адрес", size: 140, warp: true);
+ public static readonly ColumnConf Pasport = new ColumnConf(name: "Паспорт", size: 140, warp: true);
+
+ }
+
+ public struct ColumnConf
+ {
+ public string name;
+ public int size;
+ public bool warp;
+ public ColumnConf(string name = "ErNO", int size = 60, bool warp = false)
+ {
+ this.name = name;
+ this.size = size;
+ this.warp = warp;
+ }
+ }
+
+ public struct CopyOfColumnConf
+ {
+ public string name;
+ public int size;
+ public bool warp;
+ public CopyOfColumnConf(string name = "ErNO", int size = 60, bool warp = false)
+ {
+ this.name = name;
+ this.size = size;
+ this.warp = warp;
+ }
+ }
+
+}
diff --git a/MainForms/ChelForm.Designer.cs b/MainForms/ChelForm.Designer.cs
index c8ca0b8..83044b0 100644
--- a/MainForms/ChelForm.Designer.cs
+++ b/MainForms/ChelForm.Designer.cs
@@ -31,17 +31,15 @@ namespace Diplom_O
{
this.menuStrip = new System.Windows.Forms.MenuStrip();
this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
- this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
- this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.groupBox1 = new System.Windows.Forms.GroupBox();
- this.rodGridView = new System.Windows.Forms.DataGridView();
- this.comboBox1 = new System.Windows.Forms.ComboBox();
- this.chelRodLabel = new System.Windows.Forms.LinkLabel();
- this.delRodButton = new System.Windows.Forms.Button();
- this.addRodButton = new System.Windows.Forms.Button();
this.chelGridView = new System.Windows.Forms.DataGridView();
this.delButton = new System.Windows.Forms.Button();
this.changeButton = new System.Windows.Forms.Button();
@@ -50,10 +48,9 @@ namespace Diplom_O
this.dropFindButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.findBox = new System.Windows.Forms.TextBox();
+ this.selectButton = new System.Windows.Forms.Button();
this.menuStrip.SuspendLayout();
this.statusStrip1.SuspendLayout();
- this.groupBox1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.rodGridView)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.chelGridView)).BeginInit();
this.SuspendLayout();
//
@@ -61,26 +58,49 @@ namespace Diplom_O
//
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.shtatMI,
+ this.chelRodMI,
this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
this.otpBolMI,
- this.chelRodMI});
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
this.menuStrip.Location = new System.Drawing.Point(0, 0);
this.menuStrip.Name = "menuStrip";
- this.menuStrip.Size = new System.Drawing.Size(1186, 24);
+ this.menuStrip.Size = new System.Drawing.Size(1328, 24);
this.menuStrip.TabIndex = 1;
this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
//
// shtatMI
//
this.shtatMI.Name = "shtatMI";
- this.shtatMI.Size = new System.Drawing.Size(46, 20);
- this.shtatMI.Text = "Штат";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
//
// rabitnikiMI
//
this.rabitnikiMI.Name = "rabitnikiMI";
- this.rabitnikiMI.Size = new System.Drawing.Size(78, 20);
- this.rabitnikiMI.Text = "Работники";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
//
// otpBolMI
//
@@ -88,11 +108,17 @@ namespace Diplom_O
this.otpBolMI.Size = new System.Drawing.Size(100, 20);
this.otpBolMI.Text = "Отпуск/Больн.";
//
- // chelRodMI
+ // детиToolStripMenuItem
//
- this.chelRodMI.Name = "chelRodMI";
- this.chelRodMI.Size = new System.Drawing.Size(95, 20);
- this.chelRodMI.Text = "Люди/Родств.";
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
//
// errorLabel
//
@@ -107,85 +133,12 @@ namespace Diplom_O
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.errorLabel});
- this.statusStrip1.Location = new System.Drawing.Point(0, 386);
+ this.statusStrip1.Location = new System.Drawing.Point(0, 772);
this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(1186, 22);
+ this.statusStrip1.Size = new System.Drawing.Size(1328, 22);
this.statusStrip1.TabIndex = 16;
this.statusStrip1.Text = "statusStrip1";
//
- // groupBox1
- //
- this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.groupBox1.Controls.Add(this.rodGridView);
- this.groupBox1.Controls.Add(this.comboBox1);
- this.groupBox1.Controls.Add(this.chelRodLabel);
- this.groupBox1.Controls.Add(this.delRodButton);
- this.groupBox1.Controls.Add(this.addRodButton);
- this.groupBox1.Location = new System.Drawing.Point(844, 27);
- this.groupBox1.Name = "groupBox1";
- this.groupBox1.Size = new System.Drawing.Size(330, 356);
- this.groupBox1.TabIndex = 26;
- this.groupBox1.TabStop = false;
- this.groupBox1.Text = "Родственники";
- //
- // rodGridView
- //
- this.rodGridView.AllowUserToAddRows = false;
- this.rodGridView.AllowUserToDeleteRows = false;
- this.rodGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.rodGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
- this.rodGridView.Location = new System.Drawing.Point(6, 85);
- this.rodGridView.MultiSelect = false;
- this.rodGridView.Name = "rodGridView";
- this.rodGridView.ReadOnly = true;
- this.rodGridView.RowHeadersVisible = false;
- this.rodGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
- this.rodGridView.Size = new System.Drawing.Size(318, 265);
- this.rodGridView.TabIndex = 12;
- //
- // comboBox1
- //
- this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.comboBox1.FormattingEnabled = true;
- this.comboBox1.Items.AddRange(new object[] {
- "Родственная связь"});
- this.comboBox1.Location = new System.Drawing.Point(168, 21);
- this.comboBox1.Name = "comboBox1";
- this.comboBox1.Size = new System.Drawing.Size(156, 21);
- this.comboBox1.TabIndex = 7;
- //
- // chelRodLabel
- //
- this.chelRodLabel.AutoSize = true;
- this.chelRodLabel.Location = new System.Drawing.Point(6, 24);
- this.chelRodLabel.Name = "chelRodLabel";
- this.chelRodLabel.Size = new System.Drawing.Size(81, 13);
- this.chelRodLabel.TabIndex = 6;
- this.chelRodLabel.TabStop = true;
- this.chelRodLabel.Text = "Фамилия И.О.";
- this.chelRodLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.chelRodLabel_Clicked);
- //
- // delRodButton
- //
- this.delRodButton.Location = new System.Drawing.Point(87, 56);
- this.delRodButton.Name = "delRodButton";
- this.delRodButton.Size = new System.Drawing.Size(75, 23);
- this.delRodButton.TabIndex = 10;
- this.delRodButton.Text = "Удалить";
- this.delRodButton.UseVisualStyleBackColor = true;
- //
- // addRodButton
- //
- this.addRodButton.Location = new System.Drawing.Point(6, 56);
- this.addRodButton.Name = "addRodButton";
- this.addRodButton.Size = new System.Drawing.Size(75, 23);
- this.addRodButton.TabIndex = 8;
- this.addRodButton.Text = "Добавить";
- this.addRodButton.UseVisualStyleBackColor = true;
- //
// chelGridView
//
this.chelGridView.AllowUserToAddRows = false;
@@ -200,12 +153,13 @@ namespace Diplom_O
this.chelGridView.ReadOnly = true;
this.chelGridView.RowHeadersVisible = false;
this.chelGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
- this.chelGridView.Size = new System.Drawing.Size(826, 298);
+ this.chelGridView.Size = new System.Drawing.Size(1304, 684);
this.chelGridView.TabIndex = 11;
//
// delButton
//
- this.delButton.Location = new System.Drawing.Point(174, 27);
+ this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delButton.Location = new System.Drawing.Point(1241, 27);
this.delButton.Name = "delButton";
this.delButton.Size = new System.Drawing.Size(75, 23);
this.delButton.TabIndex = 2;
@@ -215,7 +169,8 @@ namespace Diplom_O
//
// changeButton
//
- this.changeButton.Location = new System.Drawing.Point(93, 27);
+ this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeButton.Location = new System.Drawing.Point(1160, 27);
this.changeButton.Name = "changeButton";
this.changeButton.Size = new System.Drawing.Size(75, 23);
this.changeButton.TabIndex = 1;
@@ -225,7 +180,8 @@ namespace Diplom_O
//
// addButton
//
- this.addButton.Location = new System.Drawing.Point(12, 27);
+ this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addButton.Location = new System.Drawing.Point(1079, 27);
this.addButton.Name = "addButton";
this.addButton.Size = new System.Drawing.Size(75, 23);
this.addButton.TabIndex = 0;
@@ -238,18 +194,18 @@ namespace Diplom_O
this.showWorkerCheckBox.AutoSize = true;
this.showWorkerCheckBox.Checked = true;
this.showWorkerCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
- this.showWorkerCheckBox.Location = new System.Drawing.Point(255, 31);
+ this.showWorkerCheckBox.Location = new System.Drawing.Point(15, 31);
this.showWorkerCheckBox.Name = "showWorkerCheckBox";
- this.showWorkerCheckBox.Size = new System.Drawing.Size(204, 17);
+ this.showWorkerCheckBox.Size = new System.Drawing.Size(165, 17);
this.showWorkerCheckBox.TabIndex = 3;
- this.showWorkerCheckBox.Text = "Поrазать/скрыть трудоустроенных";
+ this.showWorkerCheckBox.Text = "Показать трудоустроенных";
this.showWorkerCheckBox.UseVisualStyleBackColor = true;
- this.showWorkerCheckBox.CheckedChanged += new System.EventHandler(this.checkBox_CheckedChanged);
+ this.showWorkerCheckBox.CheckedChanged += new System.EventHandler(this.showWorker_CheckedChanged);
//
// dropFindButton
//
this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.dropFindButton.Location = new System.Drawing.Point(763, 360);
+ this.dropFindButton.Location = new System.Drawing.Point(1241, 746);
this.dropFindButton.Name = "dropFindButton";
this.dropFindButton.Size = new System.Drawing.Size(75, 23);
this.dropFindButton.TabIndex = 5;
@@ -261,7 +217,7 @@ namespace Diplom_O
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 365);
+ this.label1.Location = new System.Drawing.Point(12, 751);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(39, 13);
this.label1.TabIndex = 28;
@@ -271,17 +227,29 @@ namespace Diplom_O
//
this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.findBox.Location = new System.Drawing.Point(57, 362);
+ this.findBox.Location = new System.Drawing.Point(57, 748);
this.findBox.Name = "findBox";
- this.findBox.Size = new System.Drawing.Size(700, 20);
+ this.findBox.Size = new System.Drawing.Size(1178, 20);
this.findBox.TabIndex = 4;
this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged);
//
+ // selectButton
+ //
+ this.selectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.selectButton.Location = new System.Drawing.Point(998, 27);
+ this.selectButton.Name = "selectButton";
+ this.selectButton.Size = new System.Drawing.Size(75, 23);
+ this.selectButton.TabIndex = 29;
+ this.selectButton.Text = "Выбрать";
+ this.selectButton.UseVisualStyleBackColor = true;
+ this.selectButton.Click += new System.EventHandler(this.selectButton_Click);
+ //
// ChelForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1186, 408);
+ this.ClientSize = new System.Drawing.Size(1328, 794);
+ this.Controls.Add(this.selectButton);
this.Controls.Add(this.chelGridView);
this.Controls.Add(this.delButton);
this.Controls.Add(this.changeButton);
@@ -290,18 +258,15 @@ namespace Diplom_O
this.Controls.Add(this.dropFindButton);
this.Controls.Add(this.label1);
this.Controls.Add(this.findBox);
- this.Controls.Add(this.groupBox1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.menuStrip);
this.Name = "ChelForm";
- this.Text = "Люди / Родственники";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Люди";
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
- this.groupBox1.ResumeLayout(false);
- this.groupBox1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.rodGridView)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.chelGridView)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -317,12 +282,6 @@ namespace Diplom_O
private System.Windows.Forms.ToolStripMenuItem chelRodMI;
private System.Windows.Forms.ToolStripStatusLabel errorLabel;
private System.Windows.Forms.StatusStrip statusStrip1;
- private System.Windows.Forms.GroupBox groupBox1;
- private System.Windows.Forms.DataGridView rodGridView;
- private System.Windows.Forms.ComboBox comboBox1;
- private System.Windows.Forms.LinkLabel chelRodLabel;
- private System.Windows.Forms.Button delRodButton;
- private System.Windows.Forms.Button addRodButton;
private System.Windows.Forms.DataGridView chelGridView;
private System.Windows.Forms.Button delButton;
private System.Windows.Forms.Button changeButton;
@@ -331,5 +290,10 @@ namespace Diplom_O
private System.Windows.Forms.Button dropFindButton;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox findBox;
- }
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.Button selectButton;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
}
\ No newline at end of file
diff --git a/MainForms/ChelForm.cs b/MainForms/ChelForm.cs
index d406aaf..d0967c2 100644
--- a/MainForms/ChelForm.cs
+++ b/MainForms/ChelForm.cs
@@ -13,113 +13,86 @@ namespace Diplom_O
{
public partial class ChelForm : Form
{
- private Task errDrop;
- private void ShowError(string msg = null)
- {
- errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
- errorLabel.Visible = true;
- errDrop = new Task(() =>
- {
- var fd = errDrop.Id;
- Task.Delay(5000).Wait();
- if (errDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
- else errorLabel.Visible = false;
- });
- errDrop.Start();
- }
-
- private Task filterDrop;
+ private readonly ColumnConf[] tableColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf("Фамилия", 140),
+ new ColumnConf("Имя", 140),
+ new ColumnConf("Отчество", 140),
+ new ColumnConf(name: "Пол"),
+ new ColumnConf(name: "Дата рождения", size: 80),
+ new ColumnConf(name: "Адрес", size: 140, warp: true),
+ new ColumnConf(name: "Телефон", size: 100),
+ new ColumnConf(name: "ИНН", size: 100),
+ new ColumnConf(name: "СНИЛС", size: 100),
+ new ColumnConf(name: "Паспорт", size: 140, warp: true),
+ new ColumnConf(name: "Пенсионер", size: 100)
+ };
private void findBox_TextChanged(object sender, EventArgs e)
{
- filterDrop = new Task(() =>
- {
- var fd = filterDrop.Id;
- Task.Delay(1000).Wait();
- if (filterDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { resetChelTable(); }));
- else resetChelTable();
- });
- filterDrop.Start();
+ this.FindOnChanged(resetChelTable);
}
private void dropFindButton_Click(object sender, EventArgs e)
{
findBox.Text = "";
- filterDrop = new Task(() => { return; });
+ this.FindOnChanged(null);
resetChelTable();
}
private void resetChelTable()
{
try
{
- {
- chelGridView.Rows.Clear();
- chelGridView.Columns.Clear();
- var c = chelGridView.Columns;
- c.Add("Id", "№");
- c.Add("FIO", "Фамилия И.О.");
- c.Add("Male", "Пол");
- c.Add("Birthday", "Дата рождения");
- c.Add("Adress", "Адрес");
- c.Add("INN", "ИНН");
- c.Add("SNILS", "СНИЛС");
- c.Add("Pasport", "Паспорт");
- c[0].Width = 40;
- c[1].Width = 120;
- c[2].Width = 40;
- c[3].Width = 80;
- c[4].Width = 140;
- c[5].Width = 90;
- c[6].Width = 100;
- c[7].Width = 140;
- c[4].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
- c[7].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
- }
- {
- var arr = FuncDB.ListChel(findBox.Text);
- var r = chelGridView.Rows;
- foreach (var chel in arr)
- if (showWorkerCheckBox.Checked || !FuncDB.HaveChelRabotnik(chel.Id))
- r.Add(new object[] {
- chel.Id,
- chel.FName +
- (string.IsNullOrEmpty(chel.SName) ? "" : (" " + chel.SName[0] + ".")) +
- (string.IsNullOrEmpty(chel.TName) ? "" : (" " + chel.TName[0] + ".")),
- chel.Male ? "Муж" : "Жен",
- chel.Birthday.ToString("yyyy.MM.dd"),
- chel.Address,
- chel.INN,
- chel.SNILS,
- chel.Pasport
- });
- }
- if (chelGridView.Rows.Count > 0)
- chelGridView.Rows[0].Selected = true;
+ var tmp = FuncDB.ChelListTableMain(findBox.Text, showWorkerCheckBox.Checked);
+ var res = new List();
+ this.ResetTable(
+ chelGridView,
+ tableColumns,
+ tmp
+ );
}
- catch (Exception e) { ShowError(e.Message); }
+ catch (Exception e) { this.ShowError(errorLabel, e.Message); }
}
private Chel selectedChel()
{
try
{
- if (chelGridView.SelectedRows.Count != 1) throw new Exception("Человек не выбран.");
- var chel = FuncDB.GetChel((int)chelGridView.SelectedRows[0].Cells[0].Value);
- return chel;
+ if (chelGridView.SelectedRows.Count != 1)
+ throw new Exception("Человек не выбран.");
+ if (int.TryParse((string)chelGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.ChelGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
}
- catch (Exception e) { ShowError(e.Message); return null; }
}
-
- public ChelForm()
+ public bool isCanceled = true;
+ public Chel formResult = null;
+ public ChelForm(bool select = false)
{
try
{
InitializeComponent();
- chelRodMI.Enabled = false;
+ selectButton.Visible = select;
+ menuStrip.Enabled = !select;
+ this.correctUpperMenu(menuStrip, 1);
resetChelTable();
+
+ addButton.Enabled =
+ changeButton.Enabled =
+ delButton.Enabled = false;
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 1) != null;
+ changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 2) != null;
+ addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 1, 3) != null;
+
}
catch { this.Close(); }
}
-
private void addButton_Click(object sender, EventArgs e)
{
var res = new SupportForms.WorkChelForm();
@@ -130,7 +103,8 @@ namespace Diplom_O
private void changeButton_Click(object sender, EventArgs e)
{
var chel = selectedChel();
- if (chel == null) { ShowError("Человек не выбран."); return; }
+ if (chel == null)
+ return;
var res = new SupportForms.WorkChelForm(chel);
res.ShowDialog();
if (!res.isCanceled)
@@ -139,49 +113,35 @@ namespace Diplom_O
private void delButton_Click(object sender, EventArgs e)
{
var chel = selectedChel();
- if (chel == null) { ShowError("Человек не выбран."); return; }
- if (FuncDB.HaveChelToChel(chel.Id)) { ShowError("Человек есть в таблице родственников."); return; }
+ if (chel == null)
+ return;
try
{
- FuncDB.DelChel(chel);
+ FuncDB.ChelDelete(chel);
resetChelTable();
}
- catch (Exception ex) { ShowError(ex.Message); }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
}
- public void MI_Click(object sender, EventArgs e)
+ private void selectButton_Click(object sender, EventArgs e)
{
- object form = null;
- var idxMenu = -1;
- try { idxMenu = menuStrip.Items.IndexOf((ToolStripMenuItem)sender); }
- catch { };
- switch (idxMenu)
- {
- case 0: form = new ShtatForm(); break;
- case 1: form = new RabForm(); break;
- case 2: form = new OtpForm(); break;
- case 3: form = new ChelForm(); break;
- }
- if (form != null)
- {
- this.Hide();
- ((Form)form).Closed += (s, args) => this.Close();
- ((Form)form).Show();
- return;
- }
- ShowError("Ошибка перехода на новую форму.");
+ formResult = selectedChel();
+ isCanceled = false;
+ this.Close();
}
- private void checkBox_CheckedChanged(object sender, EventArgs e)
+ private void showWorker_CheckedChanged(object sender, EventArgs e)
{
resetChelTable();
}
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
- private Chel chelRod = null;
- private void chelRodLabel_Clicked(object sender, LinkLabelLinkClickedEventArgs e)
- {
- var chelForm = new SupportForms.SelectChelForm();
- chelForm.ShowDialog();
- if(chelForm.isCanceled)
- }
}
}
diff --git a/MainForms/ChildForm.Designer.cs b/MainForms/ChildForm.Designer.cs
new file mode 100644
index 0000000..52c8b26
--- /dev/null
+++ b/MainForms/ChildForm.Designer.cs
@@ -0,0 +1,393 @@
+
+namespace Diplom_O
+{
+ partial class ChildForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.childGridView = new System.Windows.Forms.DataGridView();
+ this.addButton = new System.Windows.Forms.Button();
+ this.dropFindButton = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.findBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.changeButton = new System.Windows.Forms.Button();
+ this.delButton = new System.Windows.Forms.Button();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.lableChildCountFemale = new System.Windows.Forms.Label();
+ this.lableChildCountMale = new System.Windows.Forms.Label();
+ this.lableChildCount = new System.Windows.Forms.Label();
+ this.button1 = new System.Windows.Forms.Button();
+ this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.childGridView)).BeginInit();
+ this.statusStrip1.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.chelRodMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(1059, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // childGridView
+ //
+ this.childGridView.AllowUserToAddRows = false;
+ this.childGridView.AllowUserToDeleteRows = false;
+ this.childGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.childGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.childGridView.Location = new System.Drawing.Point(12, 56);
+ this.childGridView.MultiSelect = false;
+ this.childGridView.Name = "childGridView";
+ this.childGridView.ReadOnly = true;
+ this.childGridView.RowHeadersVisible = false;
+ this.childGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.childGridView.Size = new System.Drawing.Size(688, 376);
+ this.childGridView.TabIndex = 36;
+ //
+ // addButton
+ //
+ this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addButton.Location = new System.Drawing.Point(463, 27);
+ this.addButton.Name = "addButton";
+ this.addButton.Size = new System.Drawing.Size(75, 23);
+ this.addButton.TabIndex = 29;
+ this.addButton.Text = "Добавить";
+ this.addButton.UseVisualStyleBackColor = true;
+ this.addButton.Click += new System.EventHandler(this.addButton_Click);
+ //
+ // dropFindButton
+ //
+ this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.dropFindButton.Location = new System.Drawing.Point(625, 438);
+ this.dropFindButton.Name = "dropFindButton";
+ this.dropFindButton.Size = new System.Drawing.Size(75, 23);
+ this.dropFindButton.TabIndex = 35;
+ this.dropFindButton.Text = "Сбросить";
+ this.dropFindButton.UseVisualStyleBackColor = true;
+ this.dropFindButton.Click += new System.EventHandler(this.dropFindButton_Click);
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 443);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(39, 13);
+ this.label1.TabIndex = 38;
+ this.label1.Text = "Поиск";
+ //
+ // findBox
+ //
+ this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.findBox.Location = new System.Drawing.Point(57, 440);
+ this.findBox.Name = "findBox";
+ this.findBox.Size = new System.Drawing.Size(562, 20);
+ this.findBox.TabIndex = 34;
+ this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged);
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 464);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(1059, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // changeButton
+ //
+ this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeButton.Location = new System.Drawing.Point(544, 27);
+ this.changeButton.Name = "changeButton";
+ this.changeButton.Size = new System.Drawing.Size(75, 23);
+ this.changeButton.TabIndex = 39;
+ this.changeButton.Text = "Изменить";
+ this.changeButton.UseVisualStyleBackColor = true;
+ this.changeButton.Click += new System.EventHandler(this.changeButton_Click);
+ //
+ // delButton
+ //
+ this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delButton.Location = new System.Drawing.Point(625, 27);
+ this.delButton.Name = "delButton";
+ this.delButton.Size = new System.Drawing.Size(75, 23);
+ this.delButton.TabIndex = 40;
+ this.delButton.Text = "Удалить";
+ this.delButton.UseVisualStyleBackColor = true;
+ this.delButton.Click += new System.EventHandler(this.delButton_Click);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.lableChildCountFemale);
+ this.groupBox1.Controls.Add(this.lableChildCountMale);
+ this.groupBox1.Controls.Add(this.lableChildCount);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Controls.Add(this.dateTimePicker1);
+ this.groupBox1.Controls.Add(this.label5);
+ this.groupBox1.Controls.Add(this.label4);
+ this.groupBox1.Controls.Add(this.label3);
+ this.groupBox1.Controls.Add(this.label2);
+ this.groupBox1.Location = new System.Drawing.Point(706, 27);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(341, 433);
+ this.groupBox1.TabIndex = 41;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Расчет";
+ //
+ // lableChildCountFemale
+ //
+ this.lableChildCountFemale.AutoSize = true;
+ this.lableChildCountFemale.Location = new System.Drawing.Point(122, 100);
+ this.lableChildCountFemale.Name = "lableChildCountFemale";
+ this.lableChildCountFemale.Size = new System.Drawing.Size(13, 13);
+ this.lableChildCountFemale.TabIndex = 20;
+ this.lableChildCountFemale.Text = "0";
+ //
+ // lableChildCountMale
+ //
+ this.lableChildCountMale.AutoSize = true;
+ this.lableChildCountMale.Location = new System.Drawing.Point(122, 74);
+ this.lableChildCountMale.Name = "lableChildCountMale";
+ this.lableChildCountMale.Size = new System.Drawing.Size(13, 13);
+ this.lableChildCountMale.TabIndex = 19;
+ this.lableChildCountMale.Text = "0";
+ //
+ // lableChildCount
+ //
+ this.lableChildCount.AutoSize = true;
+ this.lableChildCount.Location = new System.Drawing.Point(122, 48);
+ this.lableChildCount.Name = "lableChildCount";
+ this.lableChildCount.Size = new System.Drawing.Size(13, 13);
+ this.lableChildCount.TabIndex = 18;
+ this.lableChildCount.Text = "0";
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(270, 17);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(65, 23);
+ this.button1.TabIndex = 17;
+ this.button1.Text = "Расчет";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // dateTimePicker1
+ //
+ this.dateTimePicker1.Location = new System.Drawing.Point(125, 19);
+ this.dateTimePicker1.Name = "dateTimePicker1";
+ this.dateTimePicker1.Size = new System.Drawing.Size(139, 20);
+ this.dateTimePicker1.TabIndex = 16;
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(65, 100);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(54, 13);
+ this.label5.TabIndex = 15;
+ this.label5.Text = "Девочек:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(53, 74);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(66, 13);
+ this.label4.TabIndex = 14;
+ this.label4.Text = "Мальчиков:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(6, 48);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(113, 13);
+ this.label3.TabIndex = 13;
+ this.label3.Text = "Общее кол-во детей:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(34, 22);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(85, 13);
+ this.label2.TabIndex = 12;
+ this.label2.Text = "Расчет на дату:";
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // ChildForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1059, 486);
+ this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.delButton);
+ this.Controls.Add(this.changeButton);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.childGridView);
+ this.Controls.Add(this.addButton);
+ this.Controls.Add(this.dropFindButton);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.findBox);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "ChildForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Дети";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.childGridView)).EndInit();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.DataGridView childGridView;
+ private System.Windows.Forms.Button addButton;
+ private System.Windows.Forms.Button dropFindButton;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox findBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.Button changeButton;
+ private System.Windows.Forms.Button delButton;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.DateTimePicker dateTimePicker1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label lableChildCountFemale;
+ private System.Windows.Forms.Label lableChildCountMale;
+ private System.Windows.Forms.Label lableChildCount;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/ChildForm.cs b/MainForms/ChildForm.cs
new file mode 100644
index 0000000..0cc40ae
--- /dev/null
+++ b/MainForms/ChildForm.cs
@@ -0,0 +1,162 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public partial class ChildForm : Form
+ {
+ private readonly ColumnConf[] tableMainColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Фамилия И.О.", size: 140),
+ new ColumnConf(name: "Пол", size: 80),
+ new ColumnConf(name: "Дата рождения", size: 80),
+ new ColumnConf(name: "Род 1", size: 140),
+ new ColumnConf(name: "Род 2", size: 140)
+ };
+
+ private void resetChildTable()
+ {
+ try
+ {
+ var res = FuncDB.ChildTableMain(findBox.Text);
+ this.ResetTable(
+ childGridView,
+ tableMainColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Child selectedChildTable()
+ {
+ try
+ {
+ if (childGridView.SelectedRows.Count != 1)
+ throw new Exception("Ребонок не выбран.");
+ if (int.TryParse((string)childGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.ChildGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+
+ private void resetChildCount()
+ {
+ try
+ {
+ lableChildCount.Text = FuncDB.ChildCount(dateTimePicker1.Value).ToString();
+ lableChildCountMale.Text = FuncDB.ChildCount(dateTimePicker1.Value, true).ToString();
+ lableChildCountFemale.Text = FuncDB.ChildCount(dateTimePicker1.Value, false).ToString();
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ public ChildForm()
+ {
+ InitializeComponent();
+ this.correctUpperMenu(menuStrip, 6);
+ resetChildTable();
+ dateTimePicker1.Value = DateTime.Now;
+ resetChildCount();
+
+ addButton.Enabled =
+ changeButton.Enabled =
+ delButton.Enabled = false;
+
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 1) != null;
+ changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 2) != null;
+ addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 6, 3) != null;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var form = new SupportForms.ChildForm();
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetChildTable();
+ resetChildCount();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void changeButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var form = new SupportForms.ChildForm(selectedChildTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetChildTable();
+ resetChildCount();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void delButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var res = selectedChildTable();
+ FuncDB.ChildDelete(res);
+ resetChildTable();
+ resetChildCount();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ resetChildCount();
+ }
+ private void findBox_TextChanged(object sender, EventArgs e)
+ {
+ this.FindOnChanged(resetChildTable);
+ }
+ private void dropFindButton_Click(object sender, EventArgs e)
+ {
+ findBox.Text = "";
+ this.FindOnChanged(null);
+ resetChildTable();
+ }
+ }
+}
diff --git a/MainForms/ChildForm.resx b/MainForms/ChildForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/ChildForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/ChildrenForm.Designer.cs b/MainForms/ChildrenForm.Designer.cs
new file mode 100644
index 0000000..adc395d
--- /dev/null
+++ b/MainForms/ChildrenForm.Designer.cs
@@ -0,0 +1,210 @@
+
+namespace Diplom_O
+{
+ partial class ChildrenForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workerGridView = new System.Windows.Forms.DataGridView();
+ this.addWorkerButton = new System.Windows.Forms.Button();
+ this.dropFindButton = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.findBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.menuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).BeginInit();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.rabitnikiMI,
+ this.otpBolMI,
+ this.chelRodMI,
+ this.детиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(983, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(78, 20);
+ this.rabitnikiMI.Text = "Сотрудник";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // workerGridView
+ //
+ this.workerGridView.AllowUserToAddRows = false;
+ this.workerGridView.AllowUserToDeleteRows = false;
+ this.workerGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.workerGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.workerGridView.Location = new System.Drawing.Point(12, 56);
+ this.workerGridView.MultiSelect = false;
+ this.workerGridView.Name = "workerGridView";
+ this.workerGridView.ReadOnly = true;
+ this.workerGridView.RowHeadersVisible = false;
+ this.workerGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.workerGridView.Size = new System.Drawing.Size(459, 694);
+ this.workerGridView.TabIndex = 36;
+ this.workerGridView.SelectionChanged += new System.EventHandler(this.workerGridView_SelectionChanged);
+ //
+ // addWorkerButton
+ //
+ this.addWorkerButton.Location = new System.Drawing.Point(396, 27);
+ this.addWorkerButton.Name = "addWorkerButton";
+ this.addWorkerButton.Size = new System.Drawing.Size(75, 23);
+ this.addWorkerButton.TabIndex = 29;
+ this.addWorkerButton.Text = "Добавить";
+ this.addWorkerButton.UseVisualStyleBackColor = true;
+ this.addWorkerButton.Click += new System.EventHandler(this.addWorkerButton_Click);
+ //
+ // dropFindButton
+ //
+ this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.dropFindButton.Location = new System.Drawing.Point(396, 756);
+ this.dropFindButton.Name = "dropFindButton";
+ this.dropFindButton.Size = new System.Drawing.Size(75, 23);
+ this.dropFindButton.TabIndex = 35;
+ this.dropFindButton.Text = "Сбросить";
+ this.dropFindButton.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 761);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(39, 13);
+ this.label1.TabIndex = 38;
+ this.label1.Text = "Поиск";
+ //
+ // findBox
+ //
+ this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.findBox.Location = new System.Drawing.Point(57, 758);
+ this.findBox.Name = "findBox";
+ this.findBox.Size = new System.Drawing.Size(333, 20);
+ this.findBox.TabIndex = 34;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 782);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(983, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // ChildrenForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(983, 804);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.workerGridView);
+ this.Controls.Add(this.addWorkerButton);
+ this.Controls.Add(this.dropFindButton);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.findBox);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "ChildrenForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "ChildrenForm";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).EndInit();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.DataGridView workerGridView;
+ private System.Windows.Forms.Button addWorkerButton;
+ private System.Windows.Forms.Button dropFindButton;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox findBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/ChildrenForm.cs b/MainForms/ChildrenForm.cs
new file mode 100644
index 0000000..a6b605b
--- /dev/null
+++ b/MainForms/ChildrenForm.cs
@@ -0,0 +1,237 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public partial class ChildrenForm : Form
+ {
+ private readonly ColumnConf[] tableMainColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Таб. №", size: 80),
+ new ColumnConf(name: "Фамилия И.О.", size: 140),
+ new ColumnConf(name: "Должность", size: 140)
+ };
+ private readonly ColumnConf[] tableHistoryColumns =
+ {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Таб. №", size: 80),
+ new ColumnConf(name: "Должность", size: 140),
+ new ColumnConf(name: "Дата начала", size: 80),
+ new ColumnConf(name: "Дата конца", size: 80)
+ };
+ private readonly ColumnConf[] tableStajColumns =
+ {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Тип стажа", size: 120),
+ };
+
+ private void resetRabotnikTable()
+ {
+ try
+ {
+ var res = FuncDB.RabotnikTableMain(findBox.Text);
+ this.ResetTable(
+ workerGridView,
+ tableMainColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Rabotnik selectedRabotnikTable()
+ {
+ try
+ {
+ if (workerGridView.SelectedRows.Count != 1)
+ throw new Exception("Человек не выбран.");
+ if (int.TryParse((string)workerGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void workerGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ resetHistoryWorkTable();
+ }
+
+ private void resetHistoryWorkTable()
+ {
+ try
+ {
+ var rabotnik = selectedRabotnikTable();
+ var res = (rabotnik == null) ? Array.Empty() : FuncDB.RabotnikByChelIdTable(rabotnik.ChelId);
+ this.ResetTable(
+ historyWorkGridView,
+ tableHistoryColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Rabotnik selectedHistoryWorkTable()
+ {
+ try
+ {
+ if (historyWorkGridView.SelectedRows.Count != 1)
+ throw new Exception("Человек не выбран.");
+ if (int.TryParse((string)historyWorkGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void historyWorkGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ resetRabotnikStajTable();
+ }
+
+ private void resetRabotnikStajTable()
+ {
+ try
+ {
+ var rabotnik = selectedHistoryWorkTable();
+ var res = (rabotnik == null) ? Array.Empty() :
+ FuncDB.RabotnikTypeStajListString(rabotnik.Id);
+ this.ResetTable(
+ stajGridView,
+ tableStajColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private RabotnikTypeStaj selectedRabotnikStajTable()
+ {
+ try
+ {
+ if (stajGridView.SelectedRows.Count != 1)
+ throw new Exception("Стаж сотрудника не выбран.");
+ if (int.TryParse((string)stajGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikTypeStajGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+
+ private void resetTypeStajComboBox()
+ {
+ try
+ {
+ var list = FuncDB.TypeStajListString();
+ comboBox1.Items.Clear();
+ comboBox1.Items.AddRange(list);
+ comboBox1.SelectedIndex = -1;
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ public RabForm()
+ {
+ InitializeComponent();
+ this.correctUpperMenu(menuStrip, 1);
+ resetRabotnikTable();
+ resetTypeStajComboBox();
+ }
+
+ private void addWorkerButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm();
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void addWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm(selectedHistoryWorkTable(), true);
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void addTypeStajButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var typestaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ if (typestaj == null)
+ {
+ FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text });
+ typestaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ }
+ var rabotnik = selectedHistoryWorkTable();
+ if (rabotnik == null)
+ throw new Exception("Не выбран сотрудник");
+ FuncDB.RabotnikTypeStajAdd(new RabotnikTypeStaj() { RabitnikId = rabotnik.Id, TypeStajId = typestaj.Id });
+ resetTypeStajComboBox();
+ resetRabotnikStajTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm(selectedHistoryWorkTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void delWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var res = selectedHistoryWorkTable();
+ FuncDB.RabotnikDelete(res);
+ resetHistoryWorkTable();
+ }
+ private void delTypeStajButton_Click(object sender, EventArgs e)
+ {
+ var res = selectedRabotnikStajTable();
+ FuncDB.RabotnikTypeStajDelete(res);
+ resetRabotnikStajTable();
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+
+ }
+}
diff --git a/MainForms/ChildrenForm.resx b/MainForms/ChildrenForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/ChildrenForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/LearnForm.Designer.cs b/MainForms/LearnForm.Designer.cs
new file mode 100644
index 0000000..75cdfb6
--- /dev/null
+++ b/MainForms/LearnForm.Designer.cs
@@ -0,0 +1,269 @@
+
+namespace Diplom_O
+{
+ partial class LearnForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.group = new System.Windows.Forms.GroupBox();
+ this.learnGridView = new System.Windows.Forms.DataGridView();
+ this.linkRabLabel = new System.Windows.Forms.LinkLabel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.addButton = new System.Windows.Forms.Button();
+ this.changeButton = new System.Windows.Forms.Button();
+ this.delButton = new System.Windows.Forms.Button();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.group.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.learnGridView)).BeginInit();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(918, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(78, 20);
+ this.rabitnikiMI.Text = "Сотрудник";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 423);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(918, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // group
+ //
+ this.group.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.group.Controls.Add(this.learnGridView);
+ this.group.Location = new System.Drawing.Point(15, 56);
+ this.group.Name = "group";
+ this.group.Size = new System.Drawing.Size(891, 364);
+ this.group.TabIndex = 39;
+ this.group.TabStop = false;
+ this.group.Text = "Образование";
+ //
+ // learnGridView
+ //
+ this.learnGridView.AllowUserToAddRows = false;
+ this.learnGridView.AllowUserToDeleteRows = false;
+ this.learnGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.learnGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.learnGridView.Location = new System.Drawing.Point(6, 19);
+ this.learnGridView.MultiSelect = false;
+ this.learnGridView.Name = "learnGridView";
+ this.learnGridView.ReadOnly = true;
+ this.learnGridView.RowHeadersVisible = false;
+ this.learnGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.learnGridView.Size = new System.Drawing.Size(879, 339);
+ this.learnGridView.TabIndex = 37;
+ //
+ // linkRabLabel
+ //
+ this.linkRabLabel.AutoSize = true;
+ this.linkRabLabel.Location = new System.Drawing.Point(76, 32);
+ this.linkRabLabel.Name = "linkRabLabel";
+ this.linkRabLabel.Size = new System.Drawing.Size(121, 13);
+ this.linkRabLabel.TabIndex = 41;
+ this.linkRabLabel.TabStop = true;
+ this.linkRabLabel.Text = "Выбрать сотрудника...";
+ this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 32);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(63, 13);
+ this.label2.TabIndex = 42;
+ this.label2.Text = "Сотрудник:";
+ //
+ // addButton
+ //
+ this.addButton.Location = new System.Drawing.Point(669, 27);
+ this.addButton.Name = "addButton";
+ this.addButton.Size = new System.Drawing.Size(75, 23);
+ this.addButton.TabIndex = 43;
+ this.addButton.Text = "Добавить";
+ this.addButton.UseVisualStyleBackColor = true;
+ this.addButton.Click += new System.EventHandler(this.addButton_Click);
+ //
+ // changeButton
+ //
+ this.changeButton.Location = new System.Drawing.Point(750, 27);
+ this.changeButton.Name = "changeButton";
+ this.changeButton.Size = new System.Drawing.Size(75, 23);
+ this.changeButton.TabIndex = 44;
+ this.changeButton.Text = "Изменить";
+ this.changeButton.UseVisualStyleBackColor = true;
+ this.changeButton.Click += new System.EventHandler(this.changeButton_Click);
+ //
+ // delButton
+ //
+ this.delButton.Location = new System.Drawing.Point(831, 27);
+ this.delButton.Name = "delButton";
+ this.delButton.Size = new System.Drawing.Size(75, 23);
+ this.delButton.TabIndex = 45;
+ this.delButton.Text = "Удалить";
+ this.delButton.UseVisualStyleBackColor = true;
+ this.delButton.Click += new System.EventHandler(this.delButton_Click);
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // LearnForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(918, 445);
+ this.Controls.Add(this.delButton);
+ this.Controls.Add(this.changeButton);
+ this.Controls.Add(this.addButton);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.linkRabLabel);
+ this.Controls.Add(this.group);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "LearnForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Образование";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.group.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.learnGridView)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.GroupBox group;
+ private System.Windows.Forms.DataGridView learnGridView;
+ private System.Windows.Forms.LinkLabel linkRabLabel;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Button addButton;
+ private System.Windows.Forms.Button changeButton;
+ private System.Windows.Forms.Button delButton;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/LearnForm.cs b/MainForms/LearnForm.cs
new file mode 100644
index 0000000..be889bc
--- /dev/null
+++ b/MainForms/LearnForm.cs
@@ -0,0 +1,165 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public partial class LearnForm : Form
+ {
+ private readonly ColumnConf[] tableMainColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Название обр. учр.", size: 140, warp: true),
+ new ColumnConf(name: "Уровень", size: 140),
+ new ColumnConf(name: "Специальность", size: 140),
+ new ColumnConf(name: "Дата окончания", size: 80),
+ new ColumnConf(name: "Курсы", size: 140, warp: true),
+ new ColumnConf(name: "Проф. переподготовка", size: 140, warp: true)
+ };
+
+ private Rabotnik rabotnik = null;
+ private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new RabForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ rabotnik = null;
+ else
+ rabotnik = form.formResult;
+ ResetLinkRabotnik();
+ resetLearnTable();
+ }
+ private void ResetLinkRabotnik()
+ {
+ if (rabotnik == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var chel = FuncDB.ChelGetById(rabotnik.ChelId);
+ if (chel == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var res = chel.FName.ToString() + " " +
+ chel.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(chel.TName)) ?
+ chel.TName[0].ToString() + "." : "");
+ linkRabLabel.Text = res;
+ }
+
+ private void resetLearnTable()
+ {
+ try
+ {
+ var res = rabotnik == null ? Array.Empty() : FuncDB.LearnListTableMain(rabotnik.ChelId);
+ this.ResetTable(
+ learnGridView,
+ tableMainColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Learn selectedLearnTable()
+ {
+ try
+ {
+ if (learnGridView.SelectedRows.Count != 1)
+ throw new Exception("Образование не выбрано.");
+ if (int.TryParse((string)learnGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.LearnGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+
+ public LearnForm()
+ {
+ InitializeComponent();
+ this.correctUpperMenu(menuStrip, 4);
+ ResetLinkRabotnik();
+ resetLearnTable();
+
+ linkRabLabel.Enabled =
+ addButton.Enabled =
+ changeButton.Enabled =
+ delButton.Enabled = false;
+
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ linkRabLabel.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 0) != null;
+ delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 1) != null;
+ changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 2) != null;
+ addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 4, 3) != null;
+ }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (rabotnik == null)
+ throw new Exception("Не выбран сотрудник.");
+ var form = new SupportForms.LearnForm(chelId: rabotnik.ChelId);
+ form.ShowDialog();
+ if (!form.isCanceled)
+ {
+ resetLearnTable();
+ }
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var form = new SupportForms.LearnForm(selectedLearnTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetLearnTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void delButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ FuncDB.LearnDelete(selectedLearnTable());
+ resetLearnTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+ }
+}
diff --git a/MainForms/LearnForm.resx b/MainForms/LearnForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/LearnForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/LoginForm.Designer.cs b/MainForms/LoginForm.Designer.cs
new file mode 100644
index 0000000..d55c75a
--- /dev/null
+++ b/MainForms/LoginForm.Designer.cs
@@ -0,0 +1,151 @@
+
+namespace Diplom_O
+{
+ partial class LoginForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.loginBox = new System.Windows.Forms.ComboBox();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 98);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(332, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(245, 65);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Войти";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(164, 65);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // loginBox
+ //
+ this.loginBox.FormattingEnabled = true;
+ this.loginBox.Location = new System.Drawing.Point(66, 12);
+ this.loginBox.Name = "loginBox";
+ this.loginBox.Size = new System.Drawing.Size(254, 21);
+ this.loginBox.TabIndex = 11;
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(66, 39);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(254, 20);
+ this.textBox1.TabIndex = 12;
+ this.textBox1.UseSystemPasswordChar = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(19, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 13);
+ this.label1.TabIndex = 13;
+ this.label1.Text = "Логин:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 42);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(48, 13);
+ this.label2.TabIndex = 14;
+ this.label2.Text = "Пароль:";
+ //
+ // LoginForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(332, 120);
+ this.ControlBox = false;
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.loginBox);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "LoginForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Вход";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.ComboBox loginBox;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/LoginForm.cs b/MainForms/LoginForm.cs
new file mode 100644
index 0000000..dce827e
--- /dev/null
+++ b/MainForms/LoginForm.cs
@@ -0,0 +1,64 @@
+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.Forms;
+using Diplom_O.DataBase;
+using System.Security.Cryptography;
+
+namespace Diplom_O
+{
+ public partial class LoginForm : Form
+ {
+ public bool isCanceled = false;
+ public LoginForm()
+ {
+ InitializeComponent();
+ try
+ {
+ loginBox.Items.Clear();
+ var userList = FuncDB.UserList();
+ foreach (var usr in userList)
+ loginBox.Items.Add(usr.Login);
+ if (loginBox.Items.Count > 0)
+ loginBox.SelectedIndex = 0;
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var _user = FuncDB.UserGetByLogin((string)loginBox.Text);
+ if (_user == null)
+ throw new Exception("Пользователя не существует.");
+ if (_user.Pass != textBox1.Text)
+ throw new Exception("Не верный пароль.");
+ byte[] pass_bytes = Encoding.ASCII.GetBytes(textBox1.Text);
+ var pass_hash_bytes = new MD5CryptoServiceProvider().ComputeHash(pass_bytes);
+ _user.Pass = Encoding.ASCII.GetString(pass_hash_bytes);
+ this.SetUser(_user);
+ this.SetNextForm(_user.Default);
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+ }
+}
diff --git a/SupportForms/SelectChelForm.resx b/MainForms/LoginForm.resx
similarity index 100%
rename from SupportForms/SelectChelForm.resx
rename to MainForms/LoginForm.resx
diff --git a/MainForms/OtpForm.Designer.cs b/MainForms/OtpForm.Designer.cs
index 41ee0a8..42fb0c7 100644
--- a/MainForms/OtpForm.Designer.cs
+++ b/MainForms/OtpForm.Designer.cs
@@ -1,40 +1,442 @@
namespace Diplom_O
{
- partial class OtpForm
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
+ partial class OtpForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
- #region Windows Form Designer generated code
+ #region Windows Form Designer generated code
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(800, 450);
- this.Text = "OtpForm";
- }
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.group = new System.Windows.Forms.GroupBox();
+ this.freeGridView = new System.Windows.Forms.DataGridView();
+ this.linkRabLabel = new System.Windows.Forms.LinkLabel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.addButton = new System.Windows.Forms.Button();
+ this.changeButton = new System.Windows.Forms.Button();
+ this.delButton = new System.Windows.Forms.Button();
+ this.groupBox = new System.Windows.Forms.GroupBox();
+ this.otherDaysLabel = new System.Windows.Forms.Label();
+ this.bolDaysLabel = new System.Windows.Forms.Label();
+ this.otpDaysLabel = new System.Windows.Forms.Label();
+ this.totalDaysLabel = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
+ this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker();
+ this.updateButton = new System.Windows.Forms.Button();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.group.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.freeGridView)).BeginInit();
+ this.groupBox.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(918, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 462);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(918, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // group
+ //
+ this.group.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.group.Controls.Add(this.freeGridView);
+ this.group.Location = new System.Drawing.Point(15, 82);
+ this.group.Name = "group";
+ this.group.Size = new System.Drawing.Size(478, 377);
+ this.group.TabIndex = 39;
+ this.group.TabStop = false;
+ this.group.Text = "Образование";
+ //
+ // freeGridView
+ //
+ this.freeGridView.AllowUserToAddRows = false;
+ this.freeGridView.AllowUserToDeleteRows = false;
+ this.freeGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.freeGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.freeGridView.Location = new System.Drawing.Point(6, 19);
+ this.freeGridView.MultiSelect = false;
+ this.freeGridView.Name = "freeGridView";
+ this.freeGridView.ReadOnly = true;
+ this.freeGridView.RowHeadersVisible = false;
+ this.freeGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.freeGridView.Size = new System.Drawing.Size(466, 352);
+ this.freeGridView.TabIndex = 37;
+ //
+ // linkRabLabel
+ //
+ this.linkRabLabel.AutoSize = true;
+ this.linkRabLabel.Location = new System.Drawing.Point(76, 32);
+ this.linkRabLabel.Name = "linkRabLabel";
+ this.linkRabLabel.Size = new System.Drawing.Size(121, 13);
+ this.linkRabLabel.TabIndex = 41;
+ this.linkRabLabel.TabStop = true;
+ this.linkRabLabel.Text = "Выбрать сотрудника...";
+ this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 32);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(63, 13);
+ this.label2.TabIndex = 42;
+ this.label2.Text = "Сотрудник:";
+ //
+ // addButton
+ //
+ this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addButton.Location = new System.Drawing.Point(669, 27);
+ this.addButton.Name = "addButton";
+ this.addButton.Size = new System.Drawing.Size(75, 23);
+ this.addButton.TabIndex = 43;
+ this.addButton.Text = "Добавить";
+ this.addButton.UseVisualStyleBackColor = true;
+ this.addButton.Click += new System.EventHandler(this.addButton_Click);
+ //
+ // changeButton
+ //
+ this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeButton.Location = new System.Drawing.Point(750, 27);
+ this.changeButton.Name = "changeButton";
+ this.changeButton.Size = new System.Drawing.Size(75, 23);
+ this.changeButton.TabIndex = 44;
+ this.changeButton.Text = "Изменить";
+ this.changeButton.UseVisualStyleBackColor = true;
+ this.changeButton.Click += new System.EventHandler(this.changeButton_Click);
+ //
+ // delButton
+ //
+ this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delButton.Location = new System.Drawing.Point(831, 27);
+ this.delButton.Name = "delButton";
+ this.delButton.Size = new System.Drawing.Size(75, 23);
+ this.delButton.TabIndex = 45;
+ this.delButton.Text = "Удалить";
+ this.delButton.UseVisualStyleBackColor = true;
+ this.delButton.Click += new System.EventHandler(this.delButton_Click);
+ //
+ // groupBox
+ //
+ this.groupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox.Controls.Add(this.otherDaysLabel);
+ this.groupBox.Controls.Add(this.bolDaysLabel);
+ this.groupBox.Controls.Add(this.otpDaysLabel);
+ this.groupBox.Controls.Add(this.totalDaysLabel);
+ this.groupBox.Controls.Add(this.label7);
+ this.groupBox.Controls.Add(this.label6);
+ this.groupBox.Controls.Add(this.label5);
+ this.groupBox.Controls.Add(this.label4);
+ this.groupBox.Location = new System.Drawing.Point(499, 82);
+ this.groupBox.Name = "groupBox";
+ this.groupBox.Size = new System.Drawing.Size(407, 371);
+ this.groupBox.TabIndex = 46;
+ this.groupBox.TabStop = false;
+ this.groupBox.Text = "Расчет";
+ //
+ // otherDaysLabel
+ //
+ this.otherDaysLabel.AutoSize = true;
+ this.otherDaysLabel.Location = new System.Drawing.Point(120, 100);
+ this.otherDaysLabel.Name = "otherDaysLabel";
+ this.otherDaysLabel.Size = new System.Drawing.Size(81, 13);
+ this.otherDaysLabel.TabIndex = 23;
+ this.otherDaysLabel.Text = "otherDaysLabel";
+ //
+ // bolDaysLabel
+ //
+ this.bolDaysLabel.AutoSize = true;
+ this.bolDaysLabel.Location = new System.Drawing.Point(120, 74);
+ this.bolDaysLabel.Name = "bolDaysLabel";
+ this.bolDaysLabel.Size = new System.Drawing.Size(71, 13);
+ this.bolDaysLabel.TabIndex = 22;
+ this.bolDaysLabel.Text = "bolDaysLabel";
+ //
+ // otpDaysLabel
+ //
+ this.otpDaysLabel.AutoSize = true;
+ this.otpDaysLabel.Location = new System.Drawing.Point(120, 48);
+ this.otpDaysLabel.Name = "otpDaysLabel";
+ this.otpDaysLabel.Size = new System.Drawing.Size(72, 13);
+ this.otpDaysLabel.TabIndex = 21;
+ this.otpDaysLabel.Text = "otpDaysLabel";
+ //
+ // totalDaysLabel
+ //
+ this.totalDaysLabel.AutoSize = true;
+ this.totalDaysLabel.Location = new System.Drawing.Point(120, 22);
+ this.totalDaysLabel.Name = "totalDaysLabel";
+ this.totalDaysLabel.Size = new System.Drawing.Size(77, 13);
+ this.totalDaysLabel.TabIndex = 20;
+ this.totalDaysLabel.Text = "totalDaysLabel";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(78, 100);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(36, 13);
+ this.label7.TabIndex = 17;
+ this.label7.Text = "Иное:";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(42, 74);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(72, 13);
+ this.label6.TabIndex = 16;
+ this.label6.Text = "Больничный:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(68, 48);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(46, 13);
+ this.label5.TabIndex = 15;
+ this.label5.Text = "Отпуск:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(6, 22);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(108, 13);
+ this.label4.TabIndex = 14;
+ this.label4.Text = "Общее кол-во дней:";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 59);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(74, 13);
+ this.label1.TabIndex = 12;
+ this.label1.Text = "Дата начала:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(245, 59);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(69, 13);
+ this.label3.TabIndex = 13;
+ this.label3.Text = "Дата конца:";
+ //
+ // dateTimePicker1
+ //
+ this.dateTimePicker1.Location = new System.Drawing.Point(92, 56);
+ this.dateTimePicker1.Name = "dateTimePicker1";
+ this.dateTimePicker1.Size = new System.Drawing.Size(147, 20);
+ this.dateTimePicker1.TabIndex = 18;
+ //
+ // dateTimePicker2
+ //
+ this.dateTimePicker2.Location = new System.Drawing.Point(320, 56);
+ this.dateTimePicker2.Name = "dateTimePicker2";
+ this.dateTimePicker2.Size = new System.Drawing.Size(147, 20);
+ this.dateTimePicker2.TabIndex = 19;
+ //
+ // updateButton
+ //
+ this.updateButton.Location = new System.Drawing.Point(473, 54);
+ this.updateButton.Name = "updateButton";
+ this.updateButton.Size = new System.Drawing.Size(75, 23);
+ this.updateButton.TabIndex = 47;
+ this.updateButton.Text = "Обновить";
+ this.updateButton.UseVisualStyleBackColor = true;
+ this.updateButton.Click += new System.EventHandler(this.updateButton_Click);
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // OtpForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(918, 484);
+ this.Controls.Add(this.updateButton);
+ this.Controls.Add(this.groupBox);
+ this.Controls.Add(this.delButton);
+ this.Controls.Add(this.changeButton);
+ this.Controls.Add(this.dateTimePicker2);
+ this.Controls.Add(this.addButton);
+ this.Controls.Add(this.dateTimePicker1);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.linkRabLabel);
+ this.Controls.Add(this.group);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.label1);
+ this.Name = "OtpForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Отпуск/Больничный";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.group.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.freeGridView)).EndInit();
+ this.groupBox.ResumeLayout(false);
+ this.groupBox.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
- #endregion
- }
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.GroupBox group;
+ private System.Windows.Forms.DataGridView freeGridView;
+ private System.Windows.Forms.LinkLabel linkRabLabel;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Button addButton;
+ private System.Windows.Forms.Button changeButton;
+ private System.Windows.Forms.Button delButton;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.GroupBox groupBox;
+ private System.Windows.Forms.Label otherDaysLabel;
+ private System.Windows.Forms.Label bolDaysLabel;
+ private System.Windows.Forms.Label otpDaysLabel;
+ private System.Windows.Forms.Label totalDaysLabel;
+ private System.Windows.Forms.DateTimePicker dateTimePicker2;
+ private System.Windows.Forms.DateTimePicker dateTimePicker1;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Button updateButton;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
}
\ No newline at end of file
diff --git a/MainForms/OtpForm.cs b/MainForms/OtpForm.cs
index 42fb2f4..ab7d6f4 100644
--- a/MainForms/OtpForm.cs
+++ b/MainForms/OtpForm.cs
@@ -7,14 +7,201 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using Diplom_O.DataBase;
namespace Diplom_O
{
public partial class OtpForm : Form
{
+ private readonly ColumnConf[] tableMainColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Тип", size: 140, warp: true),
+ new ColumnConf(name: "Дата начала", size: 80),
+ new ColumnConf(name: "Дата конца", size: 80),
+ new ColumnConf(name: "Общее кол-во дней", size: 100)
+ };
+
+ private Rabotnik rabotnik = null;
+ private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new RabForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ rabotnik = null;
+ else
+ rabotnik = form.formResult;
+ ResetLinkRabotnik();
+ resetFreeTable();
+ resetFreeDays();
+ }
+ private void ResetLinkRabotnik()
+ {
+ if (rabotnik == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var chel = FuncDB.ChelGetById(rabotnik.ChelId);
+ if (chel == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var res = chel.FName.ToString() + " " +
+ chel.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(chel.TName)) ?
+ chel.TName[0].ToString() + "." : "");
+ linkRabLabel.Text = res;
+ }
+
+ private void resetFreeTable()
+ {
+ try
+ {
+ var res = rabotnik == null ? Array.Empty() : FuncDB.FreeListTable(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value);
+ this.ResetTable(
+ freeGridView,
+ tableMainColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private void resetFreeDays()
+ {
+ try
+ {
+ var res = rabotnik == null ? new Dictionary() : FuncDB.FreeListDays(rabotnik.ChelId, dateTimePicker1.Value, dateTimePicker2.Value);
+ if (res.ContainsKey("Общее"))
+ totalDaysLabel.Text = res["Общее"].ToString();
+ else
+ totalDaysLabel.Text = "0";
+ if (res.ContainsKey("Отпуск"))
+ otpDaysLabel.Text = res["Отпуск"].ToString();
+ else
+ otpDaysLabel.Text = "0";
+ if (res.ContainsKey("Больничный"))
+ bolDaysLabel.Text = res["Больничный"].ToString();
+ else
+ bolDaysLabel.Text = "0";
+ if (res.ContainsKey("Иное"))
+ otherDaysLabel.Text = res["Иное"].ToString();
+ else
+ otherDaysLabel.Text = "0";
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ private Free selectedFreeTable()
+ {
+ try
+ {
+ if (freeGridView.SelectedRows.Count != 1)
+ throw new Exception("Отстранение не выбрано.");
+ if (int.TryParse((string)freeGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.FreeGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+
public OtpForm()
{
InitializeComponent();
+ this.correctUpperMenu(menuStrip, 5);
+ DateTime d = DateTime.Now;
+ dateTimePicker1.Value = new DateTime(d.Year, 1, 1, 0, 0, 0);
+ dateTimePicker2.Value = new DateTime(d.Year + 1, 1, 1, 0, 0, 0);
+ ResetLinkRabotnik();
+ resetFreeTable();
+ resetFreeDays();
+
+ linkRabLabel.Enabled =
+ addButton.Enabled =
+ changeButton.Enabled =
+ delButton.Enabled = false;
+
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ linkRabLabel.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 0) != null;
+ delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 1) != null;
+ changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 2) != null;
+ addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 5, 3) != null;
}
- }
+
+ private void addButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (rabotnik == null)
+ throw new Exception("Не выбран сотрудник.");
+ var form = new SupportForms.OptForm(chelId: rabotnik.ChelId);
+ form.ShowDialog();
+ if (!form.isCanceled)
+ {
+ resetFreeTable();
+ resetFreeDays();
+ }
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var form = new SupportForms.OptForm(selectedFreeTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ {
+ resetFreeTable();
+ resetFreeDays();
+ }
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void delButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ FuncDB.FreeDelete(selectedFreeTable());
+ resetFreeTable();
+ resetFreeDays();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+ private void updateButton_Click(object sender, EventArgs e)
+ {
+ resetFreeTable();
+ resetFreeDays();
+ }
+ }
}
diff --git a/MainForms/OtpForm.resx b/MainForms/OtpForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/OtpForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/RabForm.Designer.cs b/MainForms/RabForm.Designer.cs
index 0586dd6..1835408 100644
--- a/MainForms/RabForm.Designer.cs
+++ b/MainForms/RabForm.Designer.cs
@@ -29,12 +29,398 @@ namespace Diplom_O
///
private void InitializeComponent()
{
- this.components = new System.ComponentModel.Container();
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(800, 450);
- this.Text = "RabForm";
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workerGridView = new System.Windows.Forms.DataGridView();
+ this.addWorkerButton = new System.Windows.Forms.Button();
+ this.dropFindButton = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.findBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.addWorkPlaceButton = new System.Windows.Forms.Button();
+ this.historyWorkGridView = new System.Windows.Forms.DataGridView();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.stajGridView = new System.Windows.Forms.DataGridView();
+ this.addTypeStajButton = new System.Windows.Forms.Button();
+ this.delTypeStajButton = new System.Windows.Forms.Button();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.changeWorkPlaceButton = new System.Windows.Forms.Button();
+ this.delWorkPlaceButton = new System.Windows.Forms.Button();
+ this.fioLabel = new System.Windows.Forms.Label();
+ this.selectButton = new System.Windows.Forms.Button();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).BeginInit();
+ this.statusStrip1.SuspendLayout();
+ this.groupBox1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.historyWorkGridView)).BeginInit();
+ this.groupBox2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).BeginInit();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(983, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // workerGridView
+ //
+ this.workerGridView.AllowUserToAddRows = false;
+ this.workerGridView.AllowUserToDeleteRows = false;
+ this.workerGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.workerGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.workerGridView.Location = new System.Drawing.Point(12, 56);
+ this.workerGridView.MultiSelect = false;
+ this.workerGridView.Name = "workerGridView";
+ this.workerGridView.ReadOnly = true;
+ this.workerGridView.RowHeadersVisible = false;
+ this.workerGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.workerGridView.Size = new System.Drawing.Size(459, 694);
+ this.workerGridView.TabIndex = 36;
+ this.workerGridView.SelectionChanged += new System.EventHandler(this.workerGridView_SelectionChanged);
+ //
+ // addWorkerButton
+ //
+ this.addWorkerButton.Location = new System.Drawing.Point(396, 27);
+ this.addWorkerButton.Name = "addWorkerButton";
+ this.addWorkerButton.Size = new System.Drawing.Size(75, 23);
+ this.addWorkerButton.TabIndex = 29;
+ this.addWorkerButton.Text = "Добавить";
+ this.addWorkerButton.UseVisualStyleBackColor = true;
+ this.addWorkerButton.Click += new System.EventHandler(this.addWorkerButton_Click);
+ //
+ // dropFindButton
+ //
+ this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.dropFindButton.Location = new System.Drawing.Point(396, 756);
+ this.dropFindButton.Name = "dropFindButton";
+ this.dropFindButton.Size = new System.Drawing.Size(75, 23);
+ this.dropFindButton.TabIndex = 35;
+ this.dropFindButton.Text = "Сбросить";
+ this.dropFindButton.UseVisualStyleBackColor = true;
+ this.dropFindButton.TextChanged += new System.EventHandler(this.dropFindButton_Click);
+ //
+ // label1
+ //
+ this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 761);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(39, 13);
+ this.label1.TabIndex = 38;
+ this.label1.Text = "Поиск";
+ //
+ // findBox
+ //
+ this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.findBox.Location = new System.Drawing.Point(57, 758);
+ this.findBox.Name = "findBox";
+ this.findBox.Size = new System.Drawing.Size(333, 20);
+ this.findBox.TabIndex = 34;
+ this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged);
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 782);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(983, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.addWorkPlaceButton);
+ this.groupBox1.Controls.Add(this.historyWorkGridView);
+ this.groupBox1.Controls.Add(this.groupBox2);
+ this.groupBox1.Controls.Add(this.changeWorkPlaceButton);
+ this.groupBox1.Controls.Add(this.delWorkPlaceButton);
+ this.groupBox1.Controls.Add(this.fioLabel);
+ this.groupBox1.Location = new System.Drawing.Point(477, 31);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(494, 747);
+ this.groupBox1.TabIndex = 39;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "История";
+ //
+ // addWorkPlaceButton
+ //
+ this.addWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addWorkPlaceButton.Location = new System.Drawing.Point(251, 19);
+ this.addWorkPlaceButton.Name = "addWorkPlaceButton";
+ this.addWorkPlaceButton.Size = new System.Drawing.Size(75, 23);
+ this.addWorkPlaceButton.TabIndex = 43;
+ this.addWorkPlaceButton.Text = "Добавить";
+ this.addWorkPlaceButton.UseVisualStyleBackColor = true;
+ this.addWorkPlaceButton.Click += new System.EventHandler(this.addWorkPlaceButton_Click);
+ //
+ // historyWorkGridView
+ //
+ this.historyWorkGridView.AllowUserToAddRows = false;
+ this.historyWorkGridView.AllowUserToDeleteRows = false;
+ this.historyWorkGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.historyWorkGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.historyWorkGridView.Location = new System.Drawing.Point(9, 48);
+ this.historyWorkGridView.MultiSelect = false;
+ this.historyWorkGridView.Name = "historyWorkGridView";
+ this.historyWorkGridView.ReadOnly = true;
+ this.historyWorkGridView.RowHeadersVisible = false;
+ this.historyWorkGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.historyWorkGridView.Size = new System.Drawing.Size(479, 332);
+ this.historyWorkGridView.TabIndex = 42;
+ this.historyWorkGridView.SelectionChanged += new System.EventHandler(this.historyWorkGridView_SelectionChanged);
+ //
+ // groupBox2
+ //
+ this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox2.Controls.Add(this.stajGridView);
+ this.groupBox2.Controls.Add(this.addTypeStajButton);
+ this.groupBox2.Controls.Add(this.delTypeStajButton);
+ this.groupBox2.Controls.Add(this.comboBox1);
+ this.groupBox2.Location = new System.Drawing.Point(9, 386);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(479, 355);
+ this.groupBox2.TabIndex = 41;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Типы стажа";
+ //
+ // stajGridView
+ //
+ this.stajGridView.AllowUserToAddRows = false;
+ this.stajGridView.AllowUserToDeleteRows = false;
+ this.stajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.stajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.stajGridView.Location = new System.Drawing.Point(6, 48);
+ this.stajGridView.MultiSelect = false;
+ this.stajGridView.Name = "stajGridView";
+ this.stajGridView.ReadOnly = true;
+ this.stajGridView.RowHeadersVisible = false;
+ this.stajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.stajGridView.Size = new System.Drawing.Size(467, 301);
+ this.stajGridView.TabIndex = 37;
+ //
+ // addTypeStajButton
+ //
+ this.addTypeStajButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addTypeStajButton.Location = new System.Drawing.Point(317, 19);
+ this.addTypeStajButton.Name = "addTypeStajButton";
+ this.addTypeStajButton.Size = new System.Drawing.Size(75, 23);
+ this.addTypeStajButton.TabIndex = 2;
+ this.addTypeStajButton.Text = "Добавить";
+ this.addTypeStajButton.UseVisualStyleBackColor = true;
+ this.addTypeStajButton.Click += new System.EventHandler(this.addTypeStajButton_Click);
+ //
+ // delTypeStajButton
+ //
+ this.delTypeStajButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delTypeStajButton.Location = new System.Drawing.Point(398, 19);
+ this.delTypeStajButton.Name = "delTypeStajButton";
+ this.delTypeStajButton.Size = new System.Drawing.Size(75, 23);
+ this.delTypeStajButton.TabIndex = 1;
+ this.delTypeStajButton.Text = "Удалить";
+ this.delTypeStajButton.UseVisualStyleBackColor = true;
+ this.delTypeStajButton.Click += new System.EventHandler(this.delTypeStajButton_Click);
+ //
+ // comboBox1
+ //
+ this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Location = new System.Drawing.Point(6, 21);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(305, 21);
+ this.comboBox1.TabIndex = 0;
+ //
+ // changeWorkPlaceButton
+ //
+ this.changeWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeWorkPlaceButton.Location = new System.Drawing.Point(332, 19);
+ this.changeWorkPlaceButton.Name = "changeWorkPlaceButton";
+ this.changeWorkPlaceButton.Size = new System.Drawing.Size(75, 23);
+ this.changeWorkPlaceButton.TabIndex = 3;
+ this.changeWorkPlaceButton.Text = "Изменить";
+ this.changeWorkPlaceButton.UseVisualStyleBackColor = true;
+ this.changeWorkPlaceButton.Click += new System.EventHandler(this.changeWorkPlaceButton_Click);
+ //
+ // delWorkPlaceButton
+ //
+ this.delWorkPlaceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delWorkPlaceButton.Location = new System.Drawing.Point(413, 19);
+ this.delWorkPlaceButton.Name = "delWorkPlaceButton";
+ this.delWorkPlaceButton.Size = new System.Drawing.Size(75, 23);
+ this.delWorkPlaceButton.TabIndex = 1;
+ this.delWorkPlaceButton.Text = "Удалить";
+ this.delWorkPlaceButton.UseVisualStyleBackColor = true;
+ this.delWorkPlaceButton.Click += new System.EventHandler(this.delWorkPlaceButton_Click);
+ //
+ // fioLabel
+ //
+ this.fioLabel.AutoSize = true;
+ this.fioLabel.Location = new System.Drawing.Point(6, 24);
+ this.fioLabel.Name = "fioLabel";
+ this.fioLabel.Size = new System.Drawing.Size(114, 13);
+ this.fioLabel.TabIndex = 0;
+ this.fioLabel.Text = "Таб№ Фамилия И.О.";
+ //
+ // selectButton
+ //
+ this.selectButton.Location = new System.Drawing.Point(315, 27);
+ this.selectButton.Name = "selectButton";
+ this.selectButton.Size = new System.Drawing.Size(75, 23);
+ this.selectButton.TabIndex = 40;
+ this.selectButton.Text = "Выбрать";
+ this.selectButton.UseVisualStyleBackColor = true;
+ this.selectButton.Click += new System.EventHandler(this.selectButton_Click);
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // RabForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(983, 804);
+ this.Controls.Add(this.selectButton);
+ this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.workerGridView);
+ this.Controls.Add(this.addWorkerButton);
+ this.Controls.Add(this.dropFindButton);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.findBox);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "RabForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Сотрудники";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.workerGridView)).EndInit();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.historyWorkGridView)).EndInit();
+ this.groupBox2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
}
- #endregion
- }
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.DataGridView workerGridView;
+ private System.Windows.Forms.Button addWorkerButton;
+ private System.Windows.Forms.Button dropFindButton;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox findBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button changeWorkPlaceButton;
+ private System.Windows.Forms.Button delWorkPlaceButton;
+ private System.Windows.Forms.Label fioLabel;
+ private System.Windows.Forms.DataGridView historyWorkGridView;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.DataGridView stajGridView;
+ private System.Windows.Forms.Button addTypeStajButton;
+ private System.Windows.Forms.Button delTypeStajButton;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Button addWorkPlaceButton;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.Button selectButton;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
}
\ No newline at end of file
diff --git a/MainForms/RabForm.cs b/MainForms/RabForm.cs
index 1d2adbc..51b86d7 100644
--- a/MainForms/RabForm.cs
+++ b/MainForms/RabForm.cs
@@ -7,14 +7,286 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using Diplom_O.DataBase;
namespace Diplom_O
{
public partial class RabForm : Form
{
- public RabForm()
+ private readonly ColumnConf[] tableMainColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Таб. №", size: 80),
+ new ColumnConf(name: "Фамилия И.О.", size: 140),
+ new ColumnConf(name: "Должность", size: 140)
+ };
+ private readonly ColumnConf[] tableHistoryColumns =
+ {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Таб. №", size: 80),
+ new ColumnConf(name: "Должность", size: 140),
+ new ColumnConf(name: "Дата начала", size: 80),
+ new ColumnConf(name: "Дата конца", size: 80)
+ };
+ private readonly ColumnConf[] tableStajColumns =
+ {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Тип стажа", size: 120),
+ };
+
+ private void resetRabotnikTable()
+ {
+ try
+ {
+ var rab = FuncDB.RabotnikTableMain(findBox.Text);
+ var res = new List();
+ foreach (var r in rab)
+ {
+ bool flag_add = false;
+ foreach (var a in r)
+ if (a.Contains(findBox.Text) && !flag_add)
+ {
+ res.Add(r);
+ flag_add = true;
+ }
+ }
+ this.ResetTable(
+ workerGridView,
+ tableMainColumns,
+ res.ToArray()
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Rabotnik selectedRabotnikTable()
+ {
+ try
+ {
+ if (workerGridView.RowCount == 0)
+ return null;
+ if (workerGridView.SelectedRows.Count != 1)
+ throw new Exception("Человек не выбран.");
+ if (int.TryParse((string)workerGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ //this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void workerGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ resetHistoryWorkTable();
+ }
+
+ private void resetHistoryWorkTable()
+ {
+ try
+ {
+ var rabotnik = selectedRabotnikTable();
+ var res = (rabotnik == null) ? Array.Empty() : FuncDB.RabotnikByChelIdTable(rabotnik.ChelId);
+ this.ResetTable(
+ historyWorkGridView,
+ tableHistoryColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private Rabotnik selectedHistoryWorkTable()
+ {
+ try
+ {
+ if (historyWorkGridView.RowCount == 0)
+ return null;
+ if (historyWorkGridView.SelectedRows.Count != 1)
+ throw new Exception("Человек не выбран.");
+ if (int.TryParse((string)historyWorkGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ //this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void historyWorkGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ resetRabotnikStajTable();
+ }
+
+ private void resetRabotnikStajTable()
+ {
+ try
+ {
+ var rabotnik = selectedHistoryWorkTable();
+ var res = (rabotnik == null) ? Array.Empty() :
+ FuncDB.RabotnikTypeStajListString(rabotnik.Id);
+ this.ResetTable(
+ stajGridView,
+ tableStajColumns,
+ res
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private RabotnikTypeStaj selectedRabotnikStajTable()
+ {
+ try
+ {
+ if (stajGridView.SelectedRows.Count != 1)
+ throw new Exception("Стаж сотрудника не выбран.");
+ if (int.TryParse((string)stajGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.RabotnikTypeStajGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ //this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+
+ private void resetTypeStajComboBox()
+ {
+ try
+ {
+ var list = FuncDB.TypeStajListString();
+ comboBox1.Items.Clear();
+ comboBox1.Items.AddRange(list);
+ comboBox1.SelectedIndex = -1;
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ public bool isCanceled = true;
+ public Rabotnik formResult = null;
+ public RabForm(bool select = false)
{
InitializeComponent();
+ selectButton.Visible = select;
+ menuStrip.Enabled = !select;
+ this.correctUpperMenu(menuStrip, 2);
+ resetRabotnikTable();
+ resetTypeStajComboBox();
+
+ addTypeStajButton.Enabled =
+ delTypeStajButton.Enabled =
+ delWorkPlaceButton.Enabled =
+ changeWorkPlaceButton.Enabled =
+ addWorkPlaceButton.Enabled =
+ addWorkerButton.Enabled = false;
+ var user = this.GetUser();
+ if (user == null)
+ return;
+
+ delWorkPlaceButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 1) != null;
+ changeWorkPlaceButton.Enabled =
+ delTypeStajButton.Enabled =
+ addTypeStajButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 2) != null;
+ addWorkerButton.Enabled =
+ addWorkPlaceButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 2, 3) != null;
+
}
+
+ private void addWorkerButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm();
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void addWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm(selectedHistoryWorkTable(), true);
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void addTypeStajButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var typestaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ if (typestaj == null)
+ {
+ FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text });
+ typestaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ }
+ var rabotnik = selectedHistoryWorkTable();
+ if (rabotnik == null)
+ throw new Exception("Не выбран сотрудник");
+ FuncDB.RabotnikTypeStajAdd(new RabotnikTypeStaj() { RabitnikId = rabotnik.Id, TypeStajId = typestaj.Id });
+ resetTypeStajComboBox();
+ resetRabotnikStajTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var form = new SupportForms.WorkerForm(selectedHistoryWorkTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetRabotnikTable();
+ }
+ private void delWorkPlaceButton_Click(object sender, EventArgs e)
+ {
+ var res = selectedHistoryWorkTable();
+ FuncDB.RabotnikDelete(res);
+ resetHistoryWorkTable();
+ }
+ private void delTypeStajButton_Click(object sender, EventArgs e)
+ {
+ var res = selectedRabotnikStajTable();
+ FuncDB.RabotnikTypeStajDelete(res);
+ resetRabotnikStajTable();
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+ private void selectButton_Click(object sender, EventArgs e)
+ {
+ formResult = selectedRabotnikTable();
+ isCanceled = false;
+ this.Close();
+ }
+
+ private void findBox_TextChanged(object sender, EventArgs e)
+ {
+ this.FindOnChanged(resetRabotnikTable);
+ }
+ private void dropFindButton_Click(object sender, EventArgs e)
+ {
+ findBox.Text = "";
+ this.FindOnChanged(null);
+ resetRabotnikTable();
+ }
+
+
}
}
diff --git a/MainForms/RabForm.resx b/MainForms/RabForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/RabForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/SettingsForm.Designer.cs b/MainForms/SettingsForm.Designer.cs
new file mode 100644
index 0000000..f7b8724
--- /dev/null
+++ b/MainForms/SettingsForm.Designer.cs
@@ -0,0 +1,378 @@
+
+namespace Diplom_O
+{
+ partial class SettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.group = new System.Windows.Forms.GroupBox();
+ this.userGridView = new System.Windows.Forms.DataGridView();
+ this.delUserButton = new System.Windows.Forms.Button();
+ this.addUserButton = new System.Windows.Forms.Button();
+ this.changeUserButton = new System.Windows.Forms.Button();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.accessGridView = new System.Windows.Forms.DataGridView();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.typeStajGridView = new System.Windows.Forms.DataGridView();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.menuStrip.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.group.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.userGridView)).BeginInit();
+ this.groupBox1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.accessGridView)).BeginInit();
+ this.groupBox2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.typeStajGridView)).BeginInit();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(1079, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 421);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(1079, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // group
+ //
+ this.group.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.group.Controls.Add(this.userGridView);
+ this.group.Controls.Add(this.delUserButton);
+ this.group.Controls.Add(this.addUserButton);
+ this.group.Controls.Add(this.changeUserButton);
+ this.group.Location = new System.Drawing.Point(267, 27);
+ this.group.Name = "group";
+ this.group.Size = new System.Drawing.Size(249, 391);
+ this.group.TabIndex = 39;
+ this.group.TabStop = false;
+ this.group.Text = "Пользователи";
+ //
+ // userGridView
+ //
+ this.userGridView.AllowUserToAddRows = false;
+ this.userGridView.AllowUserToDeleteRows = false;
+ this.userGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.userGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.userGridView.Location = new System.Drawing.Point(6, 50);
+ this.userGridView.MultiSelect = false;
+ this.userGridView.Name = "userGridView";
+ this.userGridView.ReadOnly = true;
+ this.userGridView.RowHeadersVisible = false;
+ this.userGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.userGridView.Size = new System.Drawing.Size(237, 335);
+ this.userGridView.TabIndex = 37;
+ this.userGridView.SelectionChanged += new System.EventHandler(this.userGridView_SelectionChanged);
+ //
+ // delUserButton
+ //
+ this.delUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delUserButton.Location = new System.Drawing.Point(168, 21);
+ this.delUserButton.Name = "delUserButton";
+ this.delUserButton.Size = new System.Drawing.Size(75, 23);
+ this.delUserButton.TabIndex = 45;
+ this.delUserButton.Text = "Удалить";
+ this.delUserButton.UseVisualStyleBackColor = true;
+ this.delUserButton.Click += new System.EventHandler(this.delUserButton_Click);
+ //
+ // addUserButton
+ //
+ this.addUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addUserButton.Location = new System.Drawing.Point(6, 21);
+ this.addUserButton.Name = "addUserButton";
+ this.addUserButton.Size = new System.Drawing.Size(75, 23);
+ this.addUserButton.TabIndex = 43;
+ this.addUserButton.Text = "Добавить";
+ this.addUserButton.UseVisualStyleBackColor = true;
+ this.addUserButton.Click += new System.EventHandler(this.addUserButton_Click);
+ //
+ // changeUserButton
+ //
+ this.changeUserButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeUserButton.Location = new System.Drawing.Point(87, 21);
+ this.changeUserButton.Name = "changeUserButton";
+ this.changeUserButton.Size = new System.Drawing.Size(75, 23);
+ this.changeUserButton.TabIndex = 44;
+ this.changeUserButton.Text = "Изменить";
+ this.changeUserButton.UseVisualStyleBackColor = true;
+ this.changeUserButton.Click += new System.EventHandler(this.changeUserButton_Click);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.accessGridView);
+ this.groupBox1.Location = new System.Drawing.Point(522, 26);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(545, 391);
+ this.groupBox1.TabIndex = 40;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Доступ";
+ //
+ // accessGridView
+ //
+ this.accessGridView.AllowUserToAddRows = false;
+ this.accessGridView.AllowUserToDeleteRows = false;
+ this.accessGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.accessGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.accessGridView.Location = new System.Drawing.Point(6, 22);
+ this.accessGridView.MultiSelect = false;
+ this.accessGridView.Name = "accessGridView";
+ this.accessGridView.ReadOnly = true;
+ this.accessGridView.RowHeadersVisible = false;
+ this.accessGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
+ this.accessGridView.Size = new System.Drawing.Size(533, 363);
+ this.accessGridView.TabIndex = 37;
+ this.accessGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.accessGridView_CellClick);
+ //
+ // groupBox2
+ //
+ this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.groupBox2.Controls.Add(this.textBox1);
+ this.groupBox2.Controls.Add(this.typeStajGridView);
+ this.groupBox2.Controls.Add(this.button1);
+ this.groupBox2.Controls.Add(this.button2);
+ this.groupBox2.Controls.Add(this.button3);
+ this.groupBox2.Location = new System.Drawing.Point(12, 27);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(249, 391);
+ this.groupBox2.TabIndex = 41;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Типы стажа";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(6, 48);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(237, 20);
+ this.textBox1.TabIndex = 46;
+ //
+ // typeStajGridView
+ //
+ this.typeStajGridView.AllowUserToAddRows = false;
+ this.typeStajGridView.AllowUserToDeleteRows = false;
+ this.typeStajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.typeStajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.typeStajGridView.Location = new System.Drawing.Point(6, 74);
+ this.typeStajGridView.MultiSelect = false;
+ this.typeStajGridView.Name = "typeStajGridView";
+ this.typeStajGridView.ReadOnly = true;
+ this.typeStajGridView.RowHeadersVisible = false;
+ this.typeStajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.typeStajGridView.Size = new System.Drawing.Size(237, 311);
+ this.typeStajGridView.TabIndex = 37;
+ this.typeStajGridView.SelectionChanged += new System.EventHandler(this.typeStajGridView_SelectionChanged);
+ //
+ // button1
+ //
+ this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.button1.Location = new System.Drawing.Point(168, 19);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 45;
+ this.button1.Text = "Удалить";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.delTypeButton_Click);
+ //
+ // button2
+ //
+ this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.button2.Location = new System.Drawing.Point(6, 19);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 43;
+ this.button2.Text = "Добавить";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.addTypeStajButton_Click);
+ //
+ // button3
+ //
+ this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.button3.Location = new System.Drawing.Point(87, 19);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(75, 23);
+ this.button3.TabIndex = 44;
+ this.button3.Text = "Изменить";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.changeTypeStajButton_Click);
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1079, 443);
+ this.Controls.Add(this.groupBox2);
+ this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.group);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "SettingsForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Отпуск/Больничный";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.group.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.userGridView)).EndInit();
+ this.groupBox1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.accessGridView)).EndInit();
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.typeStajGridView)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.GroupBox group;
+ private System.Windows.Forms.DataGridView userGridView;
+ private System.Windows.Forms.Button addUserButton;
+ private System.Windows.Forms.Button changeUserButton;
+ private System.Windows.Forms.Button delUserButton;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.DataGridView accessGridView;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.DataGridView typeStajGridView;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.TextBox textBox1;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/SettingsForm.cs b/MainForms/SettingsForm.cs
new file mode 100644
index 0000000..5316134
--- /dev/null
+++ b/MainForms/SettingsForm.cs
@@ -0,0 +1,364 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public partial class SettingsForm : Form
+ {
+ private readonly ColumnConf[] tableUserColumns = {
+ new ColumnConf(name: "Логин", size: 140)
+ };
+ private readonly ColumnConf[] tableAccessColumns = {
+ new ColumnConf(name: "Форма", size: 140),
+ new ColumnConf(name: "Просм.", size: 80),
+ new ColumnConf(name: "Удал.", size: 80),
+ new ColumnConf(name: "Изм.", size: 80),
+ new ColumnConf(name: "Доб.", size: 80)
+ };
+ private readonly ColumnConf[] tableTypeStajColumns = {
+ new ColumnConf(name: "Название", size: 140)
+ };
+
+ private void resetTypeStajTable()
+ {
+ try
+ {
+ var res = new List();
+ var subres = FuncDB.TypeStajListString();
+ foreach (var a in subres)
+ res.Add(new string[] { a });
+ this.ResetTable(
+ typeStajGridView,
+ tableTypeStajColumns,
+ res.ToArray()
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private TypeStaj selectedTypeStajTable()
+ {
+ try
+ {
+ if (typeStajGridView.SelectedRows.Count != 1)
+ return null;
+ return FuncDB.TypeStajGetByName((string)typeStajGridView.SelectedRows[0].Cells[0].Value);
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void typeStajGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ var type_staj = selectedTypeStajTable();
+ textBox1.Text = type_staj == null ? "" : type_staj.Name;
+ }
+
+ private void resetUserTable()
+ {
+ try
+ {
+ this.ResetTable(
+ userGridView,
+ tableUserColumns,
+ FuncDB.UserListTable(true)
+ );
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+ private User selectedUserTable()
+ {
+ try
+ {
+ if (userGridView.SelectedRows.Count != 1)
+ return null;
+ return FuncDB.UserGetByLogin((string)userGridView.SelectedRows[0].Cells[0].Value);
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
+ }
+ }
+ private void userGridView_SelectionChanged(object sender, EventArgs e)
+ {
+ resetAccessTable();
+ }
+
+ private void initAccessTable()
+ {
+ try
+ {
+ accessGridView.Rows.Clear();
+ accessGridView.Columns.Clear();
+ var c = accessGridView.Columns;
+ for (var i = 0; i < tableAccessColumns.Length; i++)
+ {
+ if (i != 0)
+ c.Add(new DataGridViewCheckBoxColumn()
+ {
+ FalseValue = false,
+ TrueValue = true,
+ HeaderText = tableAccessColumns[i].name
+ });
+ else
+ c.Add(tableAccessColumns[i].name, tableAccessColumns[i].name);
+ c[i].Width = tableAccessColumns[i].size;
+ if (tableAccessColumns[i].warp)
+ c[i].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
+ }
+ foreach (var formName in FormArray.formName)
+ {
+ accessGridView.Rows.Add();
+ var row = accessGridView.Rows[accessGridView.Rows.Count - 1];
+ row.Cells[0].Value = formName;
+ for (var i = 0; i < FormArray.formAccess.Length; i++)
+ ((DataGridViewCheckBoxCell)row.Cells[i + 1]).Value = false;
+ }
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void accessGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ try
+ {
+ if (accessGridView.SelectedCells.Count != 1)
+ return;
+ var cell = accessGridView.SelectedCells[0];
+ var accessId = cell.ColumnIndex;
+ if (accessId == 0)
+ return;
+ else
+ accessId--;
+ var formId = cell.RowIndex;
+ ((DataGridViewCheckBoxCell)accessGridView.SelectedCells[0]).Value =
+ !(bool)((DataGridViewCheckBoxCell)accessGridView.SelectedCells[0]).Value;
+ var user = selectedUserTable();
+ if (user == null)
+ throw new Exception("Пользователь не выбран.");
+
+ var access = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, formId, accessId);
+ if (
+ (access == null && !(bool)cell.Value) ||
+ (access != null && (bool)cell.Value)
+ )
+ return;
+ if ((bool)cell.Value)
+ {
+ if (FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, formId, 0) == null)
+ FuncDB.AccessAdd(new Access()
+ {
+ UserId = user.Id,
+ FormId = formId,
+ FormatAccess = 0
+ });
+ FuncDB.AccessAdd(new Access()
+ {
+ UserId = user.Id,
+ FormId = formId,
+ FormatAccess = accessId
+ });
+ }
+ else
+ {
+ if (formId == 7 && FuncDB.AccessToSettingsFullCountWithoutUserId(user) == 0)
+ throw new Exception("Должен хотя бы 1 польз. иметь полн. дост. к настр.");
+ if (formId == user.Default && accessId == 0)
+ throw new Exception("Нельзя снять разрешение для окна по умолчанию.");
+ if (accessId == 0)
+ {
+ var list = FuncDB.AccessGetByUserIdFormId(user.Id, formId);
+ foreach (var l in list)
+ FuncDB.AccessDelete(l);
+ }
+ else
+ {
+ FuncDB.AccessDelete(access);
+ }
+ }
+ resetAccessTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ resetAccessTable();
+ }
+
+ }
+
+ private void resetAccessTable()
+ {
+ try
+ {
+ var user = selectedUserTable();
+ var res = new bool[FormArray.formName.Length, FormArray.formAccess.Length];
+ if (user != null)
+ res = FuncDB.AccessListTable(user.Id);
+ for (var i = 0; i < FormArray.formName.Length; i++)
+ for (var j = 0; j < FormArray.formAccess.Length; j++)
+ ((DataGridViewCheckBoxCell)accessGridView.Rows[i].Cells[j + 1]).Value = res[i, j];
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ public SettingsForm()
+ {
+ InitializeComponent();
+ this.correctUpperMenu(menuStrip, 7);
+ initAccessTable();
+ resetTypeStajTable();
+ resetUserTable();
+
+ addUserButton.Enabled =
+ changeUserButton.Enabled =
+ delUserButton.Enabled =
+ accessGridView.Enabled =
+ button2.Enabled =
+ button1.Enabled =
+ button3.Enabled =
+ false;
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ accessGridView.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 2) != null ||
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 3) != null;
+
+ delUserButton.Enabled =
+ button1.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 1) != null;
+ changeUserButton.Enabled =
+ button3.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 2) != null;
+ addUserButton.Enabled =
+ button2.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 7, 3) != null;
+ }
+
+ private void addTypeStajButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var type = new TypeStaj()
+ {
+ Name = textBox1.Text
+ };
+ FuncDB.TypeStajAdd(type);
+ resetTypeStajTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeTypeStajButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var type = selectedTypeStajTable();
+ if (type == null)
+ throw new Exception("Не вбран тип стажа.");
+ type.Name = textBox1.Text;
+ FuncDB.TypeStajChange(type);
+ resetTypeStajTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void delTypeButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var type = selectedTypeStajTable();
+ if (type == null)
+ throw new Exception("Не вбран тип стажа.");
+ FuncDB.TypeStajDelete(type);
+ resetTypeStajTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void addUserButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var form = new SupportForms.LoginForm();
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetUserTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void changeUserButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (selectedUserTable() == null)
+ throw new Exception("Не выбран пользователь.");
+ var form = new SupportForms.LoginForm(selectedUserTable());
+ form.ShowDialog();
+ if (!form.isCanceled)
+ resetUserTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void delUserButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var user = selectedUserTable();
+ if (user == null)
+ throw new Exception("Не выбран пользователь.");
+ if (FuncDB.AccessToSettingsFullCountWithoutUserId(user) == 0)
+ throw new Exception("Должен хотя бы 1 польз. иметь полн. дост. к настр.");
+ FuncDB.UserDelete(selectedUserTable());
+ resetUserTable();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+
+ }
+}
diff --git a/MainForms/SettingsForm.resx b/MainForms/SettingsForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/SettingsForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/MainForms/ShtatForm.Designer.cs b/MainForms/ShtatForm.Designer.cs
index 6365f19..fb661dc 100644
--- a/MainForms/ShtatForm.Designer.cs
+++ b/MainForms/ShtatForm.Designer.cs
@@ -29,75 +29,38 @@ namespace Diplom_O
///
private void InitializeComponent()
{
- this.menuStrip = new System.Windows.Forms.MenuStrip();
- this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
- this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
- this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
- this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
this.findBox = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.dropFindButton = new System.Windows.Forms.Button();
this.freeShtatCheckBox = new System.Windows.Forms.CheckBox();
- this.addButton = new System.Windows.Forms.Button();
- this.changeButton = new System.Windows.Forms.Button();
- this.delButton = new System.Windows.Forms.Button();
this.selectButton = new System.Windows.Forms.Button();
this.shtatGridView = new System.Windows.Forms.DataGridView();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
- this.menuStrip.SuspendLayout();
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.delButton = new System.Windows.Forms.Button();
+ this.changeButton = new System.Windows.Forms.Button();
+ this.addButton = new System.Windows.Forms.Button();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.shtatGridView)).BeginInit();
this.statusStrip1.SuspendLayout();
+ this.menuStrip.SuspendLayout();
this.SuspendLayout();
//
- // menuStrip
- //
- this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.shtatMI,
- this.rabitnikiMI,
- this.otpBolMI,
- this.chelRodMI});
- this.menuStrip.Location = new System.Drawing.Point(0, 0);
- this.menuStrip.Name = "menuStrip";
- this.menuStrip.Size = new System.Drawing.Size(342, 24);
- this.menuStrip.TabIndex = 8;
- this.menuStrip.Text = "menuStrip1";
- //
- // shtatMI
- //
- this.shtatMI.Name = "shtatMI";
- this.shtatMI.Size = new System.Drawing.Size(46, 20);
- this.shtatMI.Text = "Штат";
- this.shtatMI.Click += new System.EventHandler(this.MI_Click);
- //
- // rabitnikiMI
- //
- this.rabitnikiMI.Name = "rabitnikiMI";
- this.rabitnikiMI.Size = new System.Drawing.Size(78, 20);
- this.rabitnikiMI.Text = "Работники";
- this.rabitnikiMI.Click += new System.EventHandler(this.MI_Click);
- //
- // otpBolMI
- //
- this.otpBolMI.Name = "otpBolMI";
- this.otpBolMI.Size = new System.Drawing.Size(100, 20);
- this.otpBolMI.Text = "Отпуск/Больн.";
- this.otpBolMI.Click += new System.EventHandler(this.MI_Click);
- //
- // chelRodMI
- //
- this.chelRodMI.Name = "chelRodMI";
- this.chelRodMI.Size = new System.Drawing.Size(95, 20);
- this.chelRodMI.Text = "Люди/Родств.";
- this.chelRodMI.Click += new System.EventHandler(this.MI_Click);
- //
// findBox
//
this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.findBox.Location = new System.Drawing.Point(57, 490);
+ this.findBox.Location = new System.Drawing.Point(57, 613);
this.findBox.Name = "findBox";
- this.findBox.Size = new System.Drawing.Size(192, 20);
+ this.findBox.Size = new System.Drawing.Size(505, 20);
this.findBox.TabIndex = 5;
this.findBox.TextChanged += new System.EventHandler(this.findBox_TextChanged);
//
@@ -105,7 +68,7 @@ namespace Diplom_O
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 493);
+ this.label1.Location = new System.Drawing.Point(12, 616);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(39, 13);
this.label1.TabIndex = 3;
@@ -114,66 +77,39 @@ namespace Diplom_O
// dropFindButton
//
this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.dropFindButton.Location = new System.Drawing.Point(255, 488);
+ this.dropFindButton.Location = new System.Drawing.Point(568, 611);
this.dropFindButton.Name = "dropFindButton";
this.dropFindButton.Size = new System.Drawing.Size(75, 23);
this.dropFindButton.TabIndex = 6;
this.dropFindButton.Text = "Сбросить";
this.dropFindButton.UseVisualStyleBackColor = true;
this.dropFindButton.TextChanged += new System.EventHandler(this.dropFindButton_Click);
+ this.dropFindButton.Click += new System.EventHandler(this.dropFindButton_Click);
//
// freeShtatCheckBox
//
this.freeShtatCheckBox.AutoSize = true;
this.freeShtatCheckBox.Checked = true;
this.freeShtatCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
- this.freeShtatCheckBox.Location = new System.Drawing.Point(12, 56);
+ this.freeShtatCheckBox.Location = new System.Drawing.Point(12, 31);
this.freeShtatCheckBox.Name = "freeShtatCheckBox";
- this.freeShtatCheckBox.Size = new System.Drawing.Size(218, 17);
+ this.freeShtatCheckBox.Size = new System.Drawing.Size(177, 17);
this.freeShtatCheckBox.TabIndex = 4;
- this.freeShtatCheckBox.Text = "Поrазать/скрыть занятые должности";
+ this.freeShtatCheckBox.Text = "Только актуальные вакансии";
this.freeShtatCheckBox.UseVisualStyleBackColor = true;
this.freeShtatCheckBox.CheckedChanged += new System.EventHandler(this.checkBox_CheckedChanged);
//
- // addButton
- //
- this.addButton.Location = new System.Drawing.Point(93, 27);
- this.addButton.Name = "addButton";
- this.addButton.Size = new System.Drawing.Size(75, 23);
- this.addButton.TabIndex = 1;
- this.addButton.Text = "Добавить";
- this.addButton.UseVisualStyleBackColor = true;
- this.addButton.Click += new System.EventHandler(this.addButton_Click);
- //
- // changeButton
- //
- this.changeButton.Location = new System.Drawing.Point(174, 27);
- this.changeButton.Name = "changeButton";
- this.changeButton.Size = new System.Drawing.Size(75, 23);
- this.changeButton.TabIndex = 2;
- this.changeButton.Text = "Изменить";
- this.changeButton.UseVisualStyleBackColor = true;
- this.changeButton.Click += new System.EventHandler(this.changeButton_Click);
- //
- // delButton
- //
- this.delButton.Location = new System.Drawing.Point(255, 27);
- this.delButton.Name = "delButton";
- this.delButton.Size = new System.Drawing.Size(75, 23);
- this.delButton.TabIndex = 3;
- this.delButton.Text = "Удалить";
- this.delButton.UseVisualStyleBackColor = true;
- this.delButton.Click += new System.EventHandler(this.delButton_Click);
- //
// selectButton
//
- this.selectButton.Location = new System.Drawing.Point(12, 27);
+ this.selectButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.selectButton.Location = new System.Drawing.Point(325, 27);
this.selectButton.Name = "selectButton";
this.selectButton.Size = new System.Drawing.Size(75, 23);
this.selectButton.TabIndex = 0;
this.selectButton.Text = "Выбрать";
this.selectButton.UseVisualStyleBackColor = true;
this.selectButton.Visible = false;
+ this.selectButton.Click += new System.EventHandler(this.selectButton_Click);
//
// shtatGridView
//
@@ -183,22 +119,22 @@ namespace Diplom_O
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.shtatGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
- this.shtatGridView.Location = new System.Drawing.Point(12, 79);
+ this.shtatGridView.Location = new System.Drawing.Point(12, 56);
this.shtatGridView.MultiSelect = false;
this.shtatGridView.Name = "shtatGridView";
this.shtatGridView.ReadOnly = true;
this.shtatGridView.RowHeadersVisible = false;
this.shtatGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
- this.shtatGridView.Size = new System.Drawing.Size(318, 403);
+ this.shtatGridView.Size = new System.Drawing.Size(631, 549);
this.shtatGridView.TabIndex = 7;
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.errorLabel});
- this.statusStrip1.Location = new System.Drawing.Point(0, 514);
+ this.statusStrip1.Location = new System.Drawing.Point(0, 637);
this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(342, 22);
+ this.statusStrip1.Size = new System.Drawing.Size(655, 22);
this.statusStrip1.TabIndex = 15;
this.statusStrip1.Text = "statusStrip1";
//
@@ -211,54 +147,155 @@ namespace Diplom_O
this.errorLabel.Text = "Отображение ошибки";
this.errorLabel.Visible = false;
//
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(655, 24);
+ this.menuStrip.TabIndex = 16;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // delButton
+ //
+ this.delButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.delButton.Location = new System.Drawing.Point(568, 27);
+ this.delButton.Name = "delButton";
+ this.delButton.Size = new System.Drawing.Size(75, 23);
+ this.delButton.TabIndex = 17;
+ this.delButton.Text = "Удалить";
+ this.delButton.UseVisualStyleBackColor = true;
+ this.delButton.Click += new System.EventHandler(this.delButton_Click);
+ //
+ // changeButton
+ //
+ this.changeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.changeButton.Location = new System.Drawing.Point(487, 27);
+ this.changeButton.Name = "changeButton";
+ this.changeButton.Size = new System.Drawing.Size(75, 23);
+ this.changeButton.TabIndex = 18;
+ this.changeButton.Text = "Изменить";
+ this.changeButton.UseVisualStyleBackColor = true;
+ this.changeButton.Click += new System.EventHandler(this.changeButton_Click);
+ //
+ // addButton
+ //
+ this.addButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.addButton.Location = new System.Drawing.Point(406, 27);
+ this.addButton.Name = "addButton";
+ this.addButton.Size = new System.Drawing.Size(75, 23);
+ this.addButton.TabIndex = 19;
+ this.addButton.Text = "Добавить";
+ this.addButton.UseVisualStyleBackColor = true;
+ this.addButton.Click += new System.EventHandler(this.addButton_Click);
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
// ShtatForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(342, 536);
+ this.ClientSize = new System.Drawing.Size(655, 659);
+ this.Controls.Add(this.addButton);
+ this.Controls.Add(this.changeButton);
+ this.Controls.Add(this.delButton);
+ this.Controls.Add(this.menuStrip);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.shtatGridView);
this.Controls.Add(this.selectButton);
- this.Controls.Add(this.delButton);
- this.Controls.Add(this.changeButton);
- this.Controls.Add(this.addButton);
this.Controls.Add(this.freeShtatCheckBox);
this.Controls.Add(this.dropFindButton);
this.Controls.Add(this.label1);
this.Controls.Add(this.findBox);
- this.Controls.Add(this.menuStrip);
- this.MainMenuStrip = this.menuStrip;
this.Name = "ShtatForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Штат";
- this.menuStrip.ResumeLayout(false);
- this.menuStrip.PerformLayout();
+ this.Text = "Вакансии";
((System.ComponentModel.ISupportInitialize)(this.shtatGridView)).EndInit();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
-
- private System.Windows.Forms.MenuStrip menuStrip;
- private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
private System.Windows.Forms.TextBox findBox;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button dropFindButton;
private System.Windows.Forms.CheckBox freeShtatCheckBox;
- private System.Windows.Forms.Button addButton;
- private System.Windows.Forms.Button changeButton;
- private System.Windows.Forms.Button delButton;
private System.Windows.Forms.Button selectButton;
private System.Windows.Forms.DataGridView shtatGridView;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel errorLabel;
- private System.Windows.Forms.ToolStripMenuItem shtatMI;
- private System.Windows.Forms.ToolStripMenuItem otpBolMI;
- private System.Windows.Forms.ToolStripMenuItem chelRodMI;
- }
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.Button delButton;
+ private System.Windows.Forms.Button changeButton;
+ private System.Windows.Forms.Button addButton;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
}
diff --git a/MainForms/ShtatForm.cs b/MainForms/ShtatForm.cs
index 3d54d3e..5a3eb2c 100644
--- a/MainForms/ShtatForm.cs
+++ b/MainForms/ShtatForm.cs
@@ -13,39 +13,22 @@ namespace Diplom_O
{
public partial class ShtatForm : Form
{
- private Task errDrop;
- private void ShowError(string msg = null)
+ private readonly ColumnConf[] tableColumns =
{
- errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
- errorLabel.Visible = true;
- errDrop = new Task(() =>
- {
- var fd = errDrop.Id;
- Task.Delay(5000).Wait();
- if (errDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
- else errorLabel.Visible = false;
- });
- errDrop.Start();
- }
+ new ColumnConf("№"),
+ new ColumnConf("Должность", 140),
+ new ColumnConf(name: "Кол-во"),
+ new ColumnConf(name: "Своб.")
+ };
- private Task filterDrop;
private void findBox_TextChanged(object sender, EventArgs e)
{
- filterDrop = new Task(() =>
- {
- var fd = filterDrop.Id;
- Task.Delay(1000).Wait();
- if (filterDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { resetShatTable(); }));
- else resetShatTable();
- });
- filterDrop.Start();
+ this.FindOnChanged(resetShatTable);
}
private void dropFindButton_Click(object sender, EventArgs e)
{
findBox.Text = "";
- filterDrop = new Task(() => { return; });
+ this.FindOnChanged(null);
resetShatTable();
}
@@ -53,64 +36,68 @@ namespace Diplom_O
{
try
{
- {
- shtatGridView.Rows.Clear();
- shtatGridView.Columns.Clear();
- var c = shtatGridView.Columns;
- c.Add("Id", "№");
- c.Add("Dolj", "Должность");
- c.Add("Kolvo", "Кол-во");
- c.Add("Free", "Своб.");
- c[0].Width = 40;
- c[1].Width = 120;
- c[2].Width = 40;
- c[3].Width = 40;
- }
- {
- var arr = FuncDB.ListShtat(findBox.Text);
- var r = shtatGridView.Rows;
- foreach (var shtat in arr)
- if (shtat.ost != 0)
- r.Add(new object[] {
- shtat.shtat.Id,
- shtat.shtat.Doljnost,
- shtat.shtat.Size,
- shtat.ost
- });
- }
- if (shtatGridView.Rows.Count > 0)
- shtatGridView.Rows[0].Selected = true;
+ var tmp = FuncDB.ShtatListTableMain(findBox.Text, freeShtatCheckBox.Checked);
+ var res = new List();
+ foreach (var i in tmp)
+ if (int.TryParse(i[0], out int t) && t != 0)
+ res.Add(i);
+ this.ResetTable(
+ shtatGridView,
+ tableColumns,
+ freeShtatCheckBox.Checked ?
+ tmp :
+ res.ToArray()
+ );
+ }
+ catch ( Exception e )
+ {
+ this.ShowError( errorLabel, e.Message );
}
- catch (Exception e) { ShowError(e.Message); }
}
private Shtat selectedShtat()
{
try
{
- if (shtatGridView.SelectedRows.Count != 1) throw new Exception("Должность не выбрана.");
- var shtat = FuncDB.GetShtat((int)shtatGridView.SelectedRows[0].Cells[0].Value);
- return shtat;
+ if ( shtatGridView.SelectedRows.Count != 1 )
+ throw new Exception("Должность не выбрана.");
+ if (int.TryParse((string)shtatGridView.SelectedRows[0].Cells[0].Value, out int value))
+ return FuncDB.ShtatGetById(value);
+ else
+ throw new Exception("Ошибка в таблице.");
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ return null;
}
- catch (Exception e) { ShowError(e.Message); return null; }
}
-
+
+ public bool isCanceled = true;
public Shtat formResult = null;
public ShtatForm(bool select = false)
{
try
{
InitializeComponent();
- Init(select);
+ selectButton.Visible = select;
+ shtatMI.Enabled = !select;
+ this.correctUpperMenu(menuStrip, 0);
resetShatTable();
+
+ addButton.Enabled =
+ changeButton.Enabled =
+ delButton.Enabled = false;
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ delButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 1) != null;
+ changeButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 2) != null;
+ addButton.Enabled = FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 0, 3) != null;
+
}
catch { this.Close(); }
}
- public void Init(bool s)
- {
- if (s) selectButton.Visible = true;
- shtatMI.Enabled = false;
- }
-
+
private void addButton_Click(object sender, EventArgs e)
{
var res = new SupportForms.WorkShtatForm();
@@ -121,7 +108,8 @@ namespace Diplom_O
private void changeButton_Click(object sender, EventArgs e)
{
var shtat = selectedShtat();
- if (shtat == null) { ShowError("Должность не выбрана."); return; }
+ if (shtat == null)
+ return;
var res = new SupportForms.WorkShtatForm(shtat);
res.ShowDialog();
if (!res.isCanceled)
@@ -130,40 +118,37 @@ namespace Diplom_O
private void delButton_Click(object sender, EventArgs e)
{
var shtat = selectedShtat();
- if (shtat == null) { ShowError("Должность не выбрана."); return; }
+ if (shtat == null)
+ return;
try
{
- FuncDB.DelShtat(shtat);
+ FuncDB.ShtatDelete(shtat);
resetShatTable();
}
- catch (Exception ex) { ShowError(ex.Message); }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
}
- public void MI_Click(object sender, EventArgs e)
+ private void selectButton_Click(object sender, EventArgs e)
{
- object form = null;
- var idxMenu = -1;
- try { idxMenu = menuStrip.Items.IndexOf((ToolStripMenuItem)sender); }
- catch { };
- switch (idxMenu)
- {
- case 0: form = new ShtatForm(); break;
- case 1: form = new RabForm(); break;
- case 2: form = new OtpForm(); break;
- case 3: form = new ChelForm(); break;
- }
- if (form != null)
- {
- this.Hide();
- ((Form)form).Closed += (s, args) => this.Close();
- ((Form)form).Show();
- return;
- }
- ShowError("Ошибка перехода на новую форму.");
+ formResult = selectedShtat();
+ isCanceled = false;
+ this.Close();
}
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
resetShatTable();
}
- }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+
+ }
}
diff --git a/MainForms/ShtatForm.resx b/MainForms/ShtatForm.resx
index 92a5a53..f30cde8 100644
--- a/MainForms/ShtatForm.resx
+++ b/MainForms/ShtatForm.resx
@@ -117,10 +117,10 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 17, 17
-
132, 17
+
+ 24, 19
+
\ No newline at end of file
diff --git a/MainForms/StajForm.Designer.cs b/MainForms/StajForm.Designer.cs
new file mode 100644
index 0000000..1fee6fb
--- /dev/null
+++ b/MainForms/StajForm.Designer.cs
@@ -0,0 +1,397 @@
+
+namespace Diplom_O
+{
+ partial class StajForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.menuStrip = new System.Windows.Forms.MenuStrip();
+ this.shtatMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.chelRodMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.rabitnikiMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.stajMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.learnMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.otpBolMI = new System.Windows.Forms.ToolStripMenuItem();
+ this.детиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.stajGridView = new System.Windows.Forms.DataGridView();
+ this.linkRabLabel = new System.Windows.Forms.LinkLabel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.addStajButton = new System.Windows.Forms.Button();
+ this.label3 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.dayTB = new System.Windows.Forms.TextBox();
+ this.monthTB = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.yearTB = new System.Windows.Forms.TextBox();
+ this.label6 = new System.Windows.Forms.Label();
+ this.addRadioButton = new System.Windows.Forms.RadioButton();
+ this.delRadioButton = new System.Windows.Forms.RadioButton();
+ this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.настройкиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.menuStrip.SuspendLayout();
+ this.statusStrip1.SuspendLayout();
+ this.groupBox2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).BeginInit();
+ this.SuspendLayout();
+ //
+ // menuStrip
+ //
+ this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.shtatMI,
+ this.chelRodMI,
+ this.rabitnikiMI,
+ this.stajMI,
+ this.learnMI,
+ this.otpBolMI,
+ this.детиToolStripMenuItem,
+ this.настройкиToolStripMenuItem});
+ this.menuStrip.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip.Name = "menuStrip";
+ this.menuStrip.Size = new System.Drawing.Size(705, 24);
+ this.menuStrip.TabIndex = 30;
+ this.menuStrip.Text = "menuStrip1";
+ this.menuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.upperMenuClicked);
+ //
+ // shtatMI
+ //
+ this.shtatMI.Name = "shtatMI";
+ this.shtatMI.Size = new System.Drawing.Size(139, 20);
+ this.shtatMI.Text = "Актуальные вакансии";
+ //
+ // chelRodMI
+ //
+ this.chelRodMI.Name = "chelRodMI";
+ this.chelRodMI.Size = new System.Drawing.Size(50, 20);
+ this.chelRodMI.Text = "Люди";
+ //
+ // rabitnikiMI
+ //
+ this.rabitnikiMI.Name = "rabitnikiMI";
+ this.rabitnikiMI.Size = new System.Drawing.Size(85, 20);
+ this.rabitnikiMI.Text = "Сотрудники";
+ //
+ // stajMI
+ //
+ this.stajMI.Name = "stajMI";
+ this.stajMI.Size = new System.Drawing.Size(47, 20);
+ this.stajMI.Text = "Стаж";
+ //
+ // learnMI
+ //
+ this.learnMI.Name = "learnMI";
+ this.learnMI.Size = new System.Drawing.Size(92, 20);
+ this.learnMI.Text = "Образование";
+ //
+ // otpBolMI
+ //
+ this.otpBolMI.Name = "otpBolMI";
+ this.otpBolMI.Size = new System.Drawing.Size(100, 20);
+ this.otpBolMI.Text = "Отпуск/Больн.";
+ //
+ // детиToolStripMenuItem
+ //
+ this.детиToolStripMenuItem.Name = "детиToolStripMenuItem";
+ this.детиToolStripMenuItem.Size = new System.Drawing.Size(45, 20);
+ this.детиToolStripMenuItem.Text = "Дети";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(137, 17);
+ this.errorLabel.Text = "Отображение ошибки";
+ this.errorLabel.Visible = false;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 432);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(705, 22);
+ this.statusStrip1.TabIndex = 37;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // groupBox2
+ //
+ this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox2.Controls.Add(this.stajGridView);
+ this.groupBox2.Location = new System.Drawing.Point(13, 113);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(678, 316);
+ this.groupBox2.TabIndex = 40;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Стаж";
+ //
+ // stajGridView
+ //
+ this.stajGridView.AllowUserToAddRows = false;
+ this.stajGridView.AllowUserToDeleteRows = false;
+ this.stajGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.stajGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.stajGridView.Location = new System.Drawing.Point(6, 19);
+ this.stajGridView.MultiSelect = false;
+ this.stajGridView.Name = "stajGridView";
+ this.stajGridView.ReadOnly = true;
+ this.stajGridView.RowHeadersVisible = false;
+ this.stajGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+ this.stajGridView.Size = new System.Drawing.Size(666, 291);
+ this.stajGridView.TabIndex = 37;
+ //
+ // linkRabLabel
+ //
+ this.linkRabLabel.AutoSize = true;
+ this.linkRabLabel.Location = new System.Drawing.Point(76, 32);
+ this.linkRabLabel.Name = "linkRabLabel";
+ this.linkRabLabel.Size = new System.Drawing.Size(121, 13);
+ this.linkRabLabel.TabIndex = 41;
+ this.linkRabLabel.TabStop = true;
+ this.linkRabLabel.Text = "Выбрать сотрудника...";
+ this.linkRabLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRabLabel_LinkClicked);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 32);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(69, 13);
+ this.label2.TabIndex = 42;
+ this.label2.Text = "Сотрудники:";
+ //
+ // addStajButton
+ //
+ this.addStajButton.Location = new System.Drawing.Point(616, 53);
+ this.addStajButton.Name = "addStajButton";
+ this.addStajButton.Size = new System.Drawing.Size(75, 51);
+ this.addStajButton.TabIndex = 47;
+ this.addStajButton.Text = "Установить";
+ this.addStajButton.UseVisualStyleBackColor = true;
+ this.addStajButton.Click += new System.EventHandler(this.addStajButton_Click);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(10, 60);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(63, 13);
+ this.label3.TabIndex = 48;
+ this.label3.Text = "Тип стажа:";
+ //
+ // comboBox1
+ //
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Location = new System.Drawing.Point(79, 57);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(530, 21);
+ this.comboBox1.TabIndex = 49;
+ this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.typeStajChanged);
+ this.comboBox1.SelectedValueChanged += new System.EventHandler(this.typeStajChanged);
+ //
+ // dayTB
+ //
+ this.dayTB.Location = new System.Drawing.Point(308, 86);
+ this.dayTB.Name = "dayTB";
+ this.dayTB.Size = new System.Drawing.Size(75, 20);
+ this.dayTB.TabIndex = 50;
+ //
+ // monthTB
+ //
+ this.monthTB.Location = new System.Drawing.Point(187, 86);
+ this.monthTB.Name = "monthTB";
+ this.monthTB.Size = new System.Drawing.Size(75, 20);
+ this.monthTB.TabIndex = 51;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(268, 89);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(37, 13);
+ this.label4.TabIndex = 52;
+ this.label4.Text = "Дней:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(126, 89);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(55, 13);
+ this.label5.TabIndex = 53;
+ this.label5.Text = "Месяцев:";
+ //
+ // yearTB
+ //
+ this.yearTB.Location = new System.Drawing.Point(45, 86);
+ this.yearTB.Name = "yearTB";
+ this.yearTB.Size = new System.Drawing.Size(75, 20);
+ this.yearTB.TabIndex = 54;
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(10, 89);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(29, 13);
+ this.label6.TabIndex = 55;
+ this.label6.Text = "Лет:";
+ //
+ // addRadioButton
+ //
+ this.addRadioButton.AutoSize = true;
+ this.addRadioButton.Location = new System.Drawing.Point(389, 87);
+ this.addRadioButton.Name = "addRadioButton";
+ this.addRadioButton.Size = new System.Drawing.Size(80, 17);
+ this.addRadioButton.TabIndex = 56;
+ this.addRadioButton.TabStop = true;
+ this.addRadioButton.Text = "Прибавить";
+ this.addRadioButton.UseVisualStyleBackColor = true;
+ //
+ // delRadioButton
+ //
+ this.delRadioButton.AutoSize = true;
+ this.delRadioButton.Location = new System.Drawing.Point(475, 87);
+ this.delRadioButton.Name = "delRadioButton";
+ this.delRadioButton.Size = new System.Drawing.Size(68, 17);
+ this.delRadioButton.TabIndex = 57;
+ this.delRadioButton.TabStop = true;
+ this.delRadioButton.Text = "Вычесть";
+ this.delRadioButton.UseVisualStyleBackColor = true;
+ //
+ // dateTimePicker1
+ //
+ this.dateTimePicker1.Location = new System.Drawing.Point(458, 29);
+ this.dateTimePicker1.Name = "dateTimePicker1";
+ this.dateTimePicker1.Size = new System.Drawing.Size(151, 20);
+ this.dateTimePicker1.TabIndex = 58;
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(616, 28);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 59;
+ this.button1.Text = "Расчитать";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(367, 33);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(85, 13);
+ this.label1.TabIndex = 60;
+ this.label1.Text = "Расчет на дату:";
+ //
+ // настройкиToolStripMenuItem
+ //
+ this.настройкиToolStripMenuItem.Name = "настройкиToolStripMenuItem";
+ this.настройкиToolStripMenuItem.Size = new System.Drawing.Size(79, 20);
+ this.настройкиToolStripMenuItem.Text = "Настройки";
+ //
+ // StajForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(705, 454);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.dateTimePicker1);
+ this.Controls.Add(this.delRadioButton);
+ this.Controls.Add(this.addRadioButton);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.yearTB);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.monthTB);
+ this.Controls.Add(this.dayTB);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.addStajButton);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.linkRabLabel);
+ this.Controls.Add(this.groupBox2);
+ this.Controls.Add(this.menuStrip);
+ this.Controls.Add(this.statusStrip1);
+ this.Name = "StajForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Стаж";
+ this.menuStrip.ResumeLayout(false);
+ this.menuStrip.PerformLayout();
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.groupBox2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.stajGridView)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.MenuStrip menuStrip;
+ private System.Windows.Forms.ToolStripMenuItem shtatMI;
+ private System.Windows.Forms.ToolStripMenuItem rabitnikiMI;
+ private System.Windows.Forms.ToolStripMenuItem otpBolMI;
+ private System.Windows.Forms.ToolStripMenuItem chelRodMI;
+ private System.Windows.Forms.ToolStripMenuItem детиToolStripMenuItem;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripMenuItem stajMI;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.DataGridView stajGridView;
+ private System.Windows.Forms.LinkLabel linkRabLabel;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Button addStajButton;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.TextBox dayTB;
+ private System.Windows.Forms.TextBox monthTB;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.TextBox yearTB;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.RadioButton addRadioButton;
+ private System.Windows.Forms.RadioButton delRadioButton;
+ private System.Windows.Forms.ToolStripMenuItem learnMI;
+ private System.Windows.Forms.DateTimePicker dateTimePicker1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.ToolStripMenuItem настройкиToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/MainForms/StajForm.cs b/MainForms/StajForm.cs
new file mode 100644
index 0000000..c52146a
--- /dev/null
+++ b/MainForms/StajForm.cs
@@ -0,0 +1,298 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O
+{
+ public partial class StajForm : Form
+ {
+ private readonly ColumnConf[] tableStajColumns = {
+ new ColumnConf(name: "№"),
+ new ColumnConf(name: "Названиe", size: 140, warp: true),
+ new ColumnConf(name: "Лет", size: 60),
+ new ColumnConf(name: "Месяцев", size: 60),
+ new ColumnConf(name: "Дней", size: 60)
+ };
+
+ private Rabotnik rabotnik = null;
+ private void linkRabLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new RabForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ rabotnik = null;
+ else
+ rabotnik = form.formResult;
+ ResetLinkRabotnik();
+ resetStajTable();
+ }
+ private void ResetLinkRabotnik()
+ {
+ if (rabotnik == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var chel = FuncDB.ChelGetById(rabotnik.ChelId);
+ if (chel == null)
+ {
+ linkRabLabel.Text = "Выбрать сотрудника...";
+ return;
+ }
+ var res = chel.FName.ToString() + " " +
+ chel.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(chel.TName)) ?
+ chel.TName[0].ToString() + "." : "");
+ linkRabLabel.Text = res;
+ }
+ private void resetStajTable()
+ {
+ (int year, int month, int day) Sum(
+ (int year, int month, int day) t1,
+ (int year, int month, int day) t2
+ )
+ {
+ var year = t1.year + t2.year;
+ var month = t1.month + t2.month;
+ var day = t1.day + t2.day;
+
+ month += day / 30;
+ day %= 30;
+ year += month / 12;
+ month %= 12;
+
+ return (year, month, day);
+ }
+ (int year, int month, int day) Sub(
+ (int year, int month, int day) t1,
+ (int year, int month, int day) t2
+ )
+ {
+ var year = t1.year - t2.year;
+ var month = t1.month - t2.month;
+ var day = t1.day - t2.day;
+ while (day < 0)
+ {
+ day += 30;
+ month--;
+ }
+ while (month < 0)
+ {
+ month += 12;
+ year--;
+ }
+ month += day / 30;
+ day %= 30;
+ year += month / 12;
+ month %= 12;
+ return (year, month, day);
+ }
+
+ try
+ {
+ var res = new List();
+ if (rabotnik == null)
+ {
+ this.ResetTable(
+ stajGridView,
+ tableStajColumns,
+ res.ToArray()
+ );
+ return;
+ }
+
+ var count = new Dictionary();
+ var listRab = FuncDB.RabotnikHistoryByChelId(rabotnik.ChelId);
+ foreach (var rab in listRab)
+ {
+ var size = FuncDB.RabotnikGetTotalTime(rab, dateTimePicker1.Value);
+ var staj = FuncDB.RabotnikTypeStajList(rab.Id);
+ if (count.ContainsKey(-1))
+ count[-1] = Sum(count[-1], size);
+ else
+ count[-1] = size;
+ foreach(var st in staj)
+ if (count.ContainsKey(st.TypeStajId))
+ count[st.TypeStajId] = Sum(count[st.TypeStajId], size);
+ else
+ count[st.TypeStajId] = size;
+ }
+
+ var listCorrStaj = FuncDB.CorrStajList(rabotnik.ChelId);
+ foreach (var corr in listCorrStaj)
+ {
+ var ts = FuncDB.TypeStajGetById(corr.TypeStajId);
+ if (ts != null && ts.Name.CompareTo("Общий") == 0)
+ corr.TypeStajId = -1;
+ var size = (corr.Year, corr.Month, corr.Day);
+ if (!count.ContainsKey(corr.TypeStajId))
+ count[corr.TypeStajId] = (0, 0, 0);
+ if (corr.AddFlag)
+ count[corr.TypeStajId] = Sum(count[corr.TypeStajId], size);
+ else
+ count[corr.TypeStajId] = Sub(count[corr.TypeStajId], size);
+ }
+
+ foreach (var r in count)
+ {
+ if (r.Value.year < 0 || r.Value.year + r.Value.month + r.Value.day == 0)
+ continue;
+ var sr = new List();
+ sr.Add(r.Key.ToString());
+ if (r.Key == -1)
+ sr.Add("Общий");
+ else
+ sr.Add(FuncDB.TypeStajGetById(r.Key).Name);
+ sr.Add(r.Value.year.ToString());
+ sr.Add(r.Value.month.ToString());
+ sr.Add(r.Value.day.ToString());
+ res.Add(sr.ToArray());
+ }
+
+ this.ResetTable(
+ stajGridView,
+ tableStajColumns,
+ res.ToArray()
+ );
+
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ public StajForm()
+ {
+ InitializeComponent();
+ this.correctUpperMenu(menuStrip, 3);
+ dateTimePicker1.Value = DateTime.Now;
+ ResetLinkRabotnik();
+ resetTypeStajComboBox();
+
+ linkRabLabel.Enabled = false;
+ addStajButton.Enabled = false;
+ var user = this.GetUser();
+ if (user == null)
+ return;
+ linkRabLabel.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 0) != null;
+ addStajButton.Enabled =
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 2) != null ||
+ FuncDB.AccessGetByUserIdFormIdAccessId(user.Id, 3, 3) != null;
+
+ }
+
+ private void resetTypeStajComboBox()
+ {
+ try
+ {
+ var list = new List();
+ list.Add("Общий");
+ list.AddRange(FuncDB.TypeStajListString());
+ comboBox1.Items.Clear();
+ comboBox1.Items.AddRange(list.ToArray());
+ comboBox1.SelectedIndex = -1;
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ }
+ }
+
+ private void upperMenuClicked(object sender, ToolStripItemClickedEventArgs e)
+ {
+ this.upperMenuClicked((MenuStrip)sender);
+ if (this.GetNextForm() != -1)
+ Close();
+ }
+
+ private void typeStajChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ addRadioButton.Checked = ! (delRadioButton.Checked = false);
+ yearTB.Text = monthTB.Text = dayTB.Text = "";
+ if (rabotnik == null)
+ return;
+ var staj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ if (staj == null)
+ return;
+ var corrStaj = FuncDB.CorrStaj(rabotnik.ChelId, staj.Name);
+ if (corrStaj == null)
+ return;
+ yearTB.Text = corrStaj.Year.ToString();
+ monthTB.Text = corrStaj.Month.ToString();
+ dayTB.Text = corrStaj.Day.ToString();
+ delRadioButton.Checked = !(addRadioButton.Checked = corrStaj.AddFlag);
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void addStajButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (rabotnik == null)
+ throw new Exception("Не выбран сотрудник.");
+ if (!int.TryParse(yearTB.Text, out int year) || year < 0)
+ throw new Exception("Не верно указан год.");
+ if (!int.TryParse(monthTB.Text, out int month) || month < 0)
+ throw new Exception("Не верно указан месяц.");
+ if (!int.TryParse(dayTB.Text, out int day) || day < 0)
+ throw new Exception("Не верно указан день.");
+
+ var typeStaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ if(typeStaj == null)
+ {
+ FuncDB.TypeStajAdd(new TypeStaj() { Name = comboBox1.Text });
+ typeStaj = FuncDB.TypeStajGetByName(comboBox1.Text);
+ }
+
+ var corrStaj = FuncDB.CorrStaj(rabotnik.ChelId, typeStaj.Name);
+ if (corrStaj == null)
+ {
+ FuncDB.CorrStajAdd(new CorrStaj()
+ {
+ Year = year,
+ Month = month,
+ Day = day,
+ ChelId = rabotnik.ChelId,
+ TypeStajId = typeStaj.Id,
+ AddFlag = addRadioButton.Checked
+ });
+ }
+ else
+ {
+ corrStaj.ChelId = rabotnik.ChelId;
+ corrStaj.TypeStajId = typeStaj.Id;
+ corrStaj.AddFlag = addRadioButton.Checked;
+ corrStaj.Year = year;
+ corrStaj.Month = month;
+ corrStaj.Day = day;
+ FuncDB.CorrStajChange(corrStaj);
+ }
+ resetStajTable();
+ resetTypeStajComboBox();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ resetStajTable();
+ }
+ }
+}
diff --git a/MainForms/StajForm.resx b/MainForms/StajForm.resx
new file mode 100644
index 0000000..9a1181c
--- /dev/null
+++ b/MainForms/StajForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 364, 17
+
+
+ 472, 17
+
+
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index 558bb09..991a7ca 100644
--- a/Program.cs
+++ b/Program.cs
@@ -3,11 +3,14 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
+using Diplom_O.DataBase;
namespace Diplom_O
{
static class Program
{
+ public static bool IsDebug = false;
+
///
/// Главная точка входа для приложения.
///
@@ -16,7 +19,87 @@ namespace Diplom_O
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new ShtatForm());
+ int nextForm = 0;
+ FuncDB.InitDB();
+ {
+ var form = new LoginForm();
+ Application.Run(form);
+ if (form.isCanceled)
+ return;
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ while (nextForm >= 0 && nextForm < FormArray.formName.Length)
+ {
+ switch (nextForm)
+ {
+ case 0:
+ {
+ var form = new ShtatForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 1:
+ {
+ var form = new ChelForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 2:
+ {
+ var form = new RabForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 3:
+ {
+ var form = new StajForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 4:
+ {
+ var form = new LearnForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 5:
+ {
+ var form = new OtpForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 6:
+ {
+ var form = new ChildForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ case 7:
+ {
+ var form = new SettingsForm();
+ Application.Run(form);
+ nextForm = form.GetNextForm();
+ form.SetNextForm(-1);
+ }
+ break;
+ }
+ }
}
}
+
}
diff --git a/SupportForms/ChildForm.Designer.cs b/SupportForms/ChildForm.Designer.cs
new file mode 100644
index 0000000..480960e
--- /dev/null
+++ b/SupportForms/ChildForm.Designer.cs
@@ -0,0 +1,274 @@
+
+namespace Diplom_O.SupportForms
+{
+ partial class ChildForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.fNameBox = new System.Windows.Forms.TextBox();
+ this.sNameBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.tNameBox = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.maleBox = new System.Windows.Forms.ComboBox();
+ this.birthdayBox = new System.Windows.Forms.DateTimePicker();
+ this.linkRod1 = new System.Windows.Forms.LinkLabel();
+ this.linkRod2 = new System.Windows.Forms.LinkLabel();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // fNameBox
+ //
+ this.fNameBox.Location = new System.Drawing.Point(104, 12);
+ this.fNameBox.Name = "fNameBox";
+ this.fNameBox.Size = new System.Drawing.Size(216, 20);
+ this.fNameBox.TabIndex = 0;
+ //
+ // sNameBox
+ //
+ this.sNameBox.Location = new System.Drawing.Point(104, 38);
+ this.sNameBox.Name = "sNameBox";
+ this.sNameBox.Size = new System.Drawing.Size(216, 20);
+ this.sNameBox.TabIndex = 1;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 225);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(332, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(245, 194);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Добавить";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(164, 194);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // tNameBox
+ //
+ this.tNameBox.Location = new System.Drawing.Point(104, 64);
+ this.tNameBox.Name = "tNameBox";
+ this.tNameBox.Size = new System.Drawing.Size(216, 20);
+ this.tNameBox.TabIndex = 2;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(42, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(56, 13);
+ this.label1.TabIndex = 29;
+ this.label1.Text = "Фамилия";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(69, 41);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(29, 13);
+ this.label2.TabIndex = 30;
+ this.label2.Text = "Имя";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(44, 67);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(54, 13);
+ this.label3.TabIndex = 31;
+ this.label3.Text = "Отчество";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(71, 93);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(27, 13);
+ this.label4.TabIndex = 32;
+ this.label4.Text = "Пол";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(12, 119);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(86, 13);
+ this.label5.TabIndex = 33;
+ this.label5.Text = "Дата рождения";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(34, 145);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(64, 13);
+ this.label6.TabIndex = 34;
+ this.label6.Text = "Родитель 1";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(34, 171);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(64, 13);
+ this.label7.TabIndex = 35;
+ this.label7.Text = "Родитель 2";
+ //
+ // maleBox
+ //
+ this.maleBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.maleBox.FormattingEnabled = true;
+ this.maleBox.Items.AddRange(new object[] {
+ "Мужчина",
+ "Женщина"});
+ this.maleBox.Location = new System.Drawing.Point(104, 90);
+ this.maleBox.Name = "maleBox";
+ this.maleBox.Size = new System.Drawing.Size(216, 21);
+ this.maleBox.TabIndex = 3;
+ //
+ // birthdayBox
+ //
+ this.birthdayBox.CustomFormat = "yyyy.MM.dd";
+ this.birthdayBox.Location = new System.Drawing.Point(104, 116);
+ this.birthdayBox.Name = "birthdayBox";
+ this.birthdayBox.Size = new System.Drawing.Size(216, 20);
+ this.birthdayBox.TabIndex = 4;
+ //
+ // linkRod1
+ //
+ this.linkRod1.AutoSize = true;
+ this.linkRod1.Location = new System.Drawing.Point(104, 145);
+ this.linkRod1.Name = "linkRod1";
+ this.linkRod1.Size = new System.Drawing.Size(110, 13);
+ this.linkRod1.TabIndex = 40;
+ this.linkRod1.TabStop = true;
+ this.linkRod1.Text = "Выбрать человека...";
+ this.linkRod1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRod1_LinkClicked);
+ //
+ // linkRod2
+ //
+ this.linkRod2.AutoSize = true;
+ this.linkRod2.Location = new System.Drawing.Point(104, 171);
+ this.linkRod2.Name = "linkRod2";
+ this.linkRod2.Size = new System.Drawing.Size(110, 13);
+ this.linkRod2.TabIndex = 41;
+ this.linkRod2.TabStop = true;
+ this.linkRod2.Text = "Выбрать человека...";
+ this.linkRod2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkRod2_LinkClicked);
+ //
+ // ChildForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(332, 247);
+ this.ControlBox = false;
+ this.Controls.Add(this.linkRod2);
+ this.Controls.Add(this.linkRod1);
+ this.Controls.Add(this.birthdayBox);
+ this.Controls.Add(this.maleBox);
+ this.Controls.Add(this.label7);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.tNameBox);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.sNameBox);
+ this.Controls.Add(this.fNameBox);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "ChildForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Ребенок";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox fNameBox;
+ private System.Windows.Forms.TextBox sNameBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.TextBox tNameBox;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.ComboBox maleBox;
+ private System.Windows.Forms.DateTimePicker birthdayBox;
+ private System.Windows.Forms.LinkLabel linkRod1;
+ private System.Windows.Forms.LinkLabel linkRod2;
+ }
+}
\ No newline at end of file
diff --git a/SupportForms/ChildForm.cs b/SupportForms/ChildForm.cs
new file mode 100644
index 0000000..752046d
--- /dev/null
+++ b/SupportForms/ChildForm.cs
@@ -0,0 +1,120 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O.SupportForms
+{
+ public partial class ChildForm : Form
+ {
+ private int? rod1Id = null;
+ private void linkRod1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new ChelForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ rod1Id = null;
+ else
+ rod1Id = form.formResult.Id;
+ linkRod1_changeName();
+ }
+ private void linkRod1_changeName()
+ {
+ linkRod1.Text = rod1Id.HasValue ?
+ FuncDB.ChelGetFIOShortById(rod1Id.Value) :
+ "Выбрать человека...";
+ }
+
+ private int? rod2Id = null;
+ private void linkRod2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new ChelForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ rod2Id = null;
+ else
+ rod2Id = form.formResult.Id;
+ linkRod2_changeName();
+ }
+ private void linkRod2_changeName()
+ {
+ linkRod2.Text = rod2Id.HasValue ?
+ FuncDB.ChelGetFIOShortById(rod2Id.Value) :
+ "Выбрать человека...";
+ }
+
+ public bool isCanceled = false;
+ private Child child = null;
+ public ChildForm(Child child = null)
+ {
+ InitializeComponent();
+ maleBox.SelectedIndex = 0;
+ birthdayBox.Value = DateTime.Now;
+ try
+ {
+ if (child != null)
+ {
+ this.child = child;
+ workButton.Text = "Изменить";
+ fNameBox.Text = child.FName;
+ sNameBox.Text = child.SName;
+ tNameBox.Text = child.TName;
+ maleBox.SelectedIndex = child.Male ? 0 : 1;
+ birthdayBox.Value = child.Birthday;
+ rod1Id = child.Parent1Id;
+ rod2Id = child.Parent2Id;
+ linkRod1_changeName();
+ linkRod2_changeName();
+ }
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (maleBox.SelectedIndex == -1)
+ throw new Exception("Пол не указан.");
+ var _child = new Child();
+ _child.FName = fNameBox.Text;
+ _child.SName = sNameBox.Text;
+ _child.TName = tNameBox.Text;
+ _child.Male = maleBox.SelectedIndex == 0;
+ _child.Birthday = birthdayBox.Value;
+ _child.Parent1Id = rod1Id;
+ _child.Parent2Id = rod2Id;
+
+ FuncDB.ChildCheckValid(_child);
+ if (child == null)
+ FuncDB.ChildAdd(_child);
+ else
+ {
+ _child.Id = child.Id;
+ FuncDB.ChildChange(_child);
+ }
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+
+ }
+}
diff --git a/SupportForms/ChildForm.resx b/SupportForms/ChildForm.resx
new file mode 100644
index 0000000..42dfef1
--- /dev/null
+++ b/SupportForms/ChildForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ True
+
+
\ No newline at end of file
diff --git a/SupportForms/LearnForm.Designer.cs b/SupportForms/LearnForm.Designer.cs
new file mode 100644
index 0000000..a0b7473
--- /dev/null
+++ b/SupportForms/LearnForm.Designer.cs
@@ -0,0 +1,239 @@
+
+namespace Diplom_O.SupportForms
+{
+ partial class LearnForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.nameBox = new System.Windows.Forms.TextBox();
+ this.typeBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.specBox = new System.Windows.Forms.TextBox();
+ this.label = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.dateBox = new System.Windows.Forms.DateTimePicker();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // nameBox
+ //
+ this.nameBox.Location = new System.Drawing.Point(104, 12);
+ this.nameBox.Name = "nameBox";
+ this.nameBox.Size = new System.Drawing.Size(216, 20);
+ this.nameBox.TabIndex = 0;
+ //
+ // typeBox
+ //
+ this.typeBox.Location = new System.Drawing.Point(104, 38);
+ this.typeBox.Name = "typeBox";
+ this.typeBox.Size = new System.Drawing.Size(216, 20);
+ this.typeBox.TabIndex = 1;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 202);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(332, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(245, 168);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Добавить";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(164, 168);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // specBox
+ //
+ this.specBox.Location = new System.Drawing.Point(104, 64);
+ this.specBox.Name = "specBox";
+ this.specBox.Size = new System.Drawing.Size(216, 20);
+ this.specBox.TabIndex = 2;
+ //
+ // label
+ //
+ this.label.AutoSize = true;
+ this.label.Location = new System.Drawing.Point(43, 15);
+ this.label.Name = "label";
+ this.label.Size = new System.Drawing.Size(55, 13);
+ this.label.TabIndex = 29;
+ this.label.Text = "Обр. учр.:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(44, 41);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(54, 13);
+ this.label2.TabIndex = 30;
+ this.label2.Text = "Уровень:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(60, 67);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(38, 13);
+ this.label3.TabIndex = 31;
+ this.label3.Text = "Спец.:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(6, 145);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(92, 13);
+ this.label5.TabIndex = 33;
+ this.label5.Text = "Дата окончания:";
+ //
+ // dateBox
+ //
+ this.dateBox.CustomFormat = "yyyy.MM.dd";
+ this.dateBox.Location = new System.Drawing.Point(104, 142);
+ this.dateBox.Name = "dateBox";
+ this.dateBox.Size = new System.Drawing.Size(216, 20);
+ this.dateBox.TabIndex = 4;
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(104, 90);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(216, 20);
+ this.textBox1.TabIndex = 34;
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(104, 116);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(216, 20);
+ this.textBox2.TabIndex = 35;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(64, 93);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(34, 13);
+ this.label1.TabIndex = 36;
+ this.label1.Text = "Курс:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(21, 119);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(77, 13);
+ this.label4.TabIndex = 37;
+ this.label4.Text = "Проф. переп.:";
+ //
+ // LearnForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(332, 224);
+ this.ControlBox = false;
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.dateBox);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label);
+ this.Controls.Add(this.specBox);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.typeBox);
+ this.Controls.Add(this.nameBox);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "LearnForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Образование";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox nameBox;
+ private System.Windows.Forms.TextBox typeBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.TextBox specBox;
+ private System.Windows.Forms.Label label;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.DateTimePicker dateBox;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label4;
+ }
+}
\ No newline at end of file
diff --git a/SupportForms/LearnForm.cs b/SupportForms/LearnForm.cs
new file mode 100644
index 0000000..d93bb0d
--- /dev/null
+++ b/SupportForms/LearnForm.cs
@@ -0,0 +1,82 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O.SupportForms
+{
+ public partial class LearnForm : Form
+ {
+ public bool isCanceled = false;
+ private int chelId = 0;
+ private Learn learn = null;
+ public LearnForm(Learn learn = null, int? chelId = null)
+ {
+ InitializeComponent();
+ if (learn == null && chelId == null)
+ throw new Exception("Не выбран сотрудник.");
+ dateBox.Value = DateTime.Now;
+ try
+ {
+ if (learn != null)
+ {
+ this.learn = learn;
+ this.chelId = learn.ChelId;
+ nameBox.Text = learn.NameSchool;
+ typeBox.Text = learn.Type;
+ specBox.Text = learn.Spec;
+ dateBox.Value = learn.End;
+ workButton.Text = "Изменить";
+ }
+ else
+ {
+ this.chelId = chelId.Value;
+ }
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var _learn = new Learn();
+ _learn.NameSchool = nameBox.Text;
+ _learn.Type = typeBox.Text;
+ _learn.Spec = specBox.Text;
+ _learn.Curs = textBox1.Text;
+ _learn.ProfPer = textBox2.Text;
+ _learn.ChelId = chelId;
+ _learn.End = dateBox.Value;
+ FuncDB.LearnCheckValid(_learn);
+ if (learn == null)
+ FuncDB.LearnAdd(_learn);
+ else
+ {
+ _learn.Id = learn.Id;
+ FuncDB.LearnChange(_learn);
+ }
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+ }
+}
diff --git a/SupportForms/LearnForm.resx b/SupportForms/LearnForm.resx
new file mode 100644
index 0000000..42dfef1
--- /dev/null
+++ b/SupportForms/LearnForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ True
+
+
\ No newline at end of file
diff --git a/SupportForms/LoginForm.Designer.cs b/SupportForms/LoginForm.Designer.cs
new file mode 100644
index 0000000..f6fe8b7
--- /dev/null
+++ b/SupportForms/LoginForm.Designer.cs
@@ -0,0 +1,188 @@
+
+namespace Diplom_O.SupportForms
+{
+ partial class LoginForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.loginBox = new System.Windows.Forms.TextBox();
+ this.passBox = new System.Windows.Forms.TextBox();
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.formBox = new System.Windows.Forms.ComboBox();
+ this.hideBox = new System.Windows.Forms.CheckBox();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // loginBox
+ //
+ this.loginBox.Location = new System.Drawing.Point(128, 12);
+ this.loginBox.Name = "loginBox";
+ this.loginBox.Size = new System.Drawing.Size(216, 20);
+ this.loginBox.TabIndex = 0;
+ //
+ // passBox
+ //
+ this.passBox.Location = new System.Drawing.Point(128, 38);
+ this.passBox.Name = "passBox";
+ this.passBox.Size = new System.Drawing.Size(216, 20);
+ this.passBox.TabIndex = 1;
+ this.passBox.UseSystemPasswordChar = true;
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 155);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(352, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(269, 121);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Добавить";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(188, 121);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(81, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 13);
+ this.label1.TabIndex = 29;
+ this.label1.Text = "Логин:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(74, 41);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(48, 13);
+ this.label2.TabIndex = 30;
+ this.label2.Text = "Пароль:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(12, 67);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(110, 13);
+ this.label4.TabIndex = 32;
+ this.label4.Text = "Окно по умолчанию:";
+ //
+ // formBox
+ //
+ this.formBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.formBox.FormattingEnabled = true;
+ this.formBox.Location = new System.Drawing.Point(128, 64);
+ this.formBox.Name = "formBox";
+ this.formBox.Size = new System.Drawing.Size(216, 21);
+ this.formBox.TabIndex = 3;
+ //
+ // hideBox
+ //
+ this.hideBox.AutoSize = true;
+ this.hideBox.Location = new System.Drawing.Point(128, 92);
+ this.hideBox.Name = "hideBox";
+ this.hideBox.Size = new System.Drawing.Size(76, 17);
+ this.hideBox.TabIndex = 42;
+ this.hideBox.Text = "Скрывать";
+ this.hideBox.UseVisualStyleBackColor = true;
+ //
+ // LoginForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(352, 177);
+ this.ControlBox = false;
+ this.Controls.Add(this.hideBox);
+ this.Controls.Add(this.formBox);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.passBox);
+ this.Controls.Add(this.loginBox);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "LoginForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Штатное место";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox loginBox;
+ private System.Windows.Forms.TextBox passBox;
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox formBox;
+ private System.Windows.Forms.CheckBox hideBox;
+ }
+}
\ No newline at end of file
diff --git a/SupportForms/LoginForm.cs b/SupportForms/LoginForm.cs
new file mode 100644
index 0000000..d1f4250
--- /dev/null
+++ b/SupportForms/LoginForm.cs
@@ -0,0 +1,79 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O.SupportForms
+{
+ public partial class LoginForm : Form
+ {
+ public bool isCanceled = false;
+ private User user = null;
+ public LoginForm(User user = null)
+ {
+ InitializeComponent();
+ formBox.Items.Clear();
+ for (var i = 0; i < 8; i++)
+ formBox.Items.Add(FormArray.GetNameString(i));
+ formBox.SelectedIndex = 0;
+ hideBox.Checked = false;
+ try
+ {
+ if (user != null)
+ {
+ this.user = user;
+ workButton.Text = "Изменить";
+ loginBox.Text = user.Login;
+ passBox.Text = user.Pass;
+ formBox.SelectedIndex = user.Default;
+ hideBox.Checked = user.Hide;
+ }
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var _user = new User();
+ _user.Login = loginBox.Text;
+ _user.Pass = passBox.Text;
+ _user.Hide = hideBox.Checked;
+ _user.Default = formBox.SelectedIndex;
+
+ FuncDB.UserCheckValid(_user);
+ if (user == null)
+ FuncDB.UserAdd(_user);
+ else
+ {
+ _user.Id = user.Id;
+ if (FuncDB.AccessGetByUserIdFormIdAccessId(_user.Id, _user.Default, 0) == null)
+ throw new Exception("Необходим сначала доступ к форме.");
+ FuncDB.UserChange(_user);
+ }
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+
+ }
+}
diff --git a/SupportForms/LoginForm.resx b/SupportForms/LoginForm.resx
new file mode 100644
index 0000000..42dfef1
--- /dev/null
+++ b/SupportForms/LoginForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ True
+
+
\ No newline at end of file
diff --git a/SupportForms/OptForm.Designer.cs b/SupportForms/OptForm.Designer.cs
new file mode 100644
index 0000000..f2eacba
--- /dev/null
+++ b/SupportForms/OptForm.Designer.cs
@@ -0,0 +1,193 @@
+
+namespace Diplom_O.SupportForms
+{
+ partial class OptForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.label = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.dateBox = new System.Windows.Forms.DateTimePicker();
+ this.dateBox2 = new System.Windows.Forms.DateTimePicker();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 152);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(332, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(245, 116);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Добавить";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(164, 116);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // label
+ //
+ this.label.AutoSize = true;
+ this.label.Location = new System.Drawing.Point(57, 15);
+ this.label.Name = "label";
+ this.label.Size = new System.Drawing.Size(29, 13);
+ this.label.TabIndex = 29;
+ this.label.Text = "Тип:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 41);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(74, 13);
+ this.label2.TabIndex = 30;
+ this.label2.Text = "Дата начала:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(17, 93);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(69, 13);
+ this.label3.TabIndex = 31;
+ this.label3.Text = "Дата конца:";
+ //
+ // checkBox1
+ //
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Location = new System.Drawing.Point(104, 66);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(121, 17);
+ this.checkBox1.TabIndex = 38;
+ this.checkBox1.Text = "По текущее время";
+ this.checkBox1.UseVisualStyleBackColor = true;
+ this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
+ //
+ // dateBox
+ //
+ this.dateBox.CustomFormat = "yyyy.MM.dd";
+ this.dateBox.Location = new System.Drawing.Point(104, 38);
+ this.dateBox.Name = "dateBox";
+ this.dateBox.Size = new System.Drawing.Size(216, 20);
+ this.dateBox.TabIndex = 39;
+ //
+ // dateBox2
+ //
+ this.dateBox2.CustomFormat = "yyyy.MM.dd";
+ this.dateBox2.Location = new System.Drawing.Point(104, 90);
+ this.dateBox2.Name = "dateBox2";
+ this.dateBox2.Size = new System.Drawing.Size(216, 20);
+ this.dateBox2.TabIndex = 40;
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "Отпуск",
+ "Больничный",
+ "Иное"});
+ this.comboBox1.Location = new System.Drawing.Point(104, 12);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(216, 21);
+ this.comboBox1.TabIndex = 41;
+ //
+ // OptForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(332, 174);
+ this.ControlBox = false;
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.dateBox2);
+ this.Controls.Add(this.dateBox);
+ this.Controls.Add(this.checkBox1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "OptForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Образование";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.Label label;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.CheckBox checkBox1;
+ private System.Windows.Forms.DateTimePicker dateBox;
+ private System.Windows.Forms.DateTimePicker dateBox2;
+ private System.Windows.Forms.ComboBox comboBox1;
+ }
+}
\ No newline at end of file
diff --git a/SupportForms/OptForm.cs b/SupportForms/OptForm.cs
new file mode 100644
index 0000000..a71520b
--- /dev/null
+++ b/SupportForms/OptForm.cs
@@ -0,0 +1,98 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O.SupportForms
+{
+ public partial class OptForm : Form
+ {
+ public bool isCanceled = false;
+ private int chelId = 0;
+ private Free free = null;
+ public OptForm(Free free = null, int? chelId = null)
+ {
+ InitializeComponent();
+ if (free == null && chelId == null)
+ throw new Exception("Не выбран сотрудник.");
+ dateBox.Value = DateTime.Now;
+ dateBox2.Value = DateTime.Now;
+ comboBox1.SelectedIndex = 0;
+ try
+ {
+ if (free != null)
+ {
+ this.free = free;
+ this.chelId = free.ChelId;
+ dateBox.Value = free.Start;
+ comboBox1.Text = free.Type;
+ if (free.End.HasValue)
+ {
+ checkBox1.Checked = false;
+ dateBox2.Enabled = true;
+ dateBox2.Value = free.End.Value;
+ }
+ else
+ {
+ checkBox1.Checked = true;
+ dateBox2.Enabled = false;
+ }
+ workButton.Text = "Изменить";
+ }
+ else
+ {
+ this.chelId = chelId.Value;
+ }
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ var _free = new Free();
+ _free.ChelId = chelId;
+ _free.Type = comboBox1.Text;
+ _free.Start = dateBox.Value;
+ if (checkBox1.Checked)
+ _free.End = null;
+ else
+ _free.End = dateBox2.Value;
+ FuncDB.FreeCheckValid(_free);
+ if (free == null)
+ FuncDB.FreeAdd(_free);
+ else
+ {
+ _free.Id = free.Id;
+ FuncDB.FreeChange(_free);
+ }
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+
+ private void checkBox1_CheckedChanged(object sender, EventArgs e)
+ {
+ dateBox2.Enabled = !checkBox1.Checked;
+ }
+ }
+}
diff --git a/SupportForms/OptForm.resx b/SupportForms/OptForm.resx
new file mode 100644
index 0000000..42dfef1
--- /dev/null
+++ b/SupportForms/OptForm.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ True
+
+
\ No newline at end of file
diff --git a/SupportForms/SelectChelForm.Designer.cs b/SupportForms/SelectChelForm.Designer.cs
deleted file mode 100644
index 5472a77..0000000
--- a/SupportForms/SelectChelForm.Designer.cs
+++ /dev/null
@@ -1,165 +0,0 @@
-
-namespace Diplom_O.SupportForms
-{
- partial class SelectChelForm
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
- this.chelGridView = new System.Windows.Forms.DataGridView();
- this.dropFindButton = new System.Windows.Forms.Button();
- this.label1 = new System.Windows.Forms.Label();
- this.findBox = new System.Windows.Forms.TextBox();
- this.button1 = new System.Windows.Forms.Button();
- this.canceledButton = new System.Windows.Forms.Button();
- this.statusStrip1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).BeginInit();
- this.SuspendLayout();
- //
- // statusStrip1
- //
- this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.errorLabel});
- this.statusStrip1.Location = new System.Drawing.Point(0, 529);
- this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(352, 22);
- this.statusStrip1.TabIndex = 2;
- this.statusStrip1.Text = "statusStrip1";
- //
- // errorLabel
- //
- this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
- this.errorLabel.ForeColor = System.Drawing.Color.Red;
- this.errorLabel.Name = "errorLabel";
- this.errorLabel.Size = new System.Drawing.Size(57, 17);
- this.errorLabel.Text = "Ошибка.";
- this.errorLabel.Visible = false;
- //
- // chelGridView
- //
- this.chelGridView.AllowUserToAddRows = false;
- this.chelGridView.AllowUserToDeleteRows = false;
- this.chelGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.chelGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
- this.chelGridView.Location = new System.Drawing.Point(12, 41);
- this.chelGridView.MultiSelect = false;
- this.chelGridView.Name = "chelGridView";
- this.chelGridView.ReadOnly = true;
- this.chelGridView.RowHeadersVisible = false;
- this.chelGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
- this.chelGridView.Size = new System.Drawing.Size(328, 456);
- this.chelGridView.TabIndex = 4;
- //
- // dropFindButton
- //
- this.dropFindButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.dropFindButton.Location = new System.Drawing.Point(265, 503);
- this.dropFindButton.Name = "dropFindButton";
- this.dropFindButton.Size = new System.Drawing.Size(75, 23);
- this.dropFindButton.TabIndex = 3;
- this.dropFindButton.Text = "Сбросить";
- this.dropFindButton.UseVisualStyleBackColor = true;
- //
- // label1
- //
- this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 508);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(39, 13);
- this.label1.TabIndex = 37;
- this.label1.Text = "Поиск";
- //
- // findBox
- //
- this.findBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.findBox.Location = new System.Drawing.Point(57, 505);
- this.findBox.Name = "findBox";
- this.findBox.Size = new System.Drawing.Size(202, 20);
- this.findBox.TabIndex = 2;
- //
- // button1
- //
- this.button1.Location = new System.Drawing.Point(12, 12);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(75, 23);
- this.button1.TabIndex = 0;
- this.button1.Text = "Выбрать";
- this.button1.UseVisualStyleBackColor = true;
- this.button1.Click += new System.EventHandler(this.workButton_Click);
- //
- // canceledButton
- //
- this.canceledButton.Location = new System.Drawing.Point(93, 12);
- this.canceledButton.Name = "canceledButton";
- this.canceledButton.Size = new System.Drawing.Size(75, 23);
- this.canceledButton.TabIndex = 1;
- this.canceledButton.Text = "Отмена";
- this.canceledButton.UseVisualStyleBackColor = true;
- this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
- //
- // SelectChelForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(352, 551);
- this.ControlBox = false;
- this.Controls.Add(this.canceledButton);
- this.Controls.Add(this.button1);
- this.Controls.Add(this.chelGridView);
- this.Controls.Add(this.dropFindButton);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.findBox);
- this.Controls.Add(this.statusStrip1);
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "SelectChelForm";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Человек";
- this.statusStrip1.ResumeLayout(false);
- this.statusStrip1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.chelGridView)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
- private System.Windows.Forms.StatusStrip statusStrip1;
- private System.Windows.Forms.ToolStripStatusLabel errorLabel;
- private System.Windows.Forms.DataGridView chelGridView;
- private System.Windows.Forms.Button dropFindButton;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.TextBox findBox;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Button canceledButton;
- }
-}
\ No newline at end of file
diff --git a/SupportForms/SelectChelForm.cs b/SupportForms/SelectChelForm.cs
deleted file mode 100644
index 39bd180..0000000
--- a/SupportForms/SelectChelForm.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-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.Forms;
-using Diplom_O.DataBase;
-
-namespace Diplom_O.SupportForms
-{
- public partial class SelectChelForm : Form
- {
- private Task errDrop;
- private void ShowError(string msg = null)
- {
- errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
- errorLabel.Visible = true;
- errDrop = new Task(() =>
- {
- var fd = errDrop.Id;
- Task.Delay(5000).Wait();
- if (errDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
- else errorLabel.Visible = false;
- });
- errDrop.Start();
- }
-
- private void resetChelTable()
- {
- try
- {
- {
- chelGridView.Rows.Clear();
- chelGridView.Columns.Clear();
- var c = chelGridView.Columns;
- c.Add("Id", "№");
- c.Add("FName", "Фамилия");
- c.Add("SName", "Имя");
- c.Add("TName", "Отчество");
- c.Add("Birthday", "Дата рождения");
- c.Add("Male", "Пол");
- c[0].Width = 40;
- c[1].Width = 120;
- c[1].Width = 120;
- c[1].Width = 120;
- c[4].Width = 80;
- c[5].Width = 80;
- }
- {
- var arr = FuncDB.ListChel(findBox.Text);
- var r = chelGridView.Rows;
- foreach (var chel in arr)
- r.Add(new object[] {
- chel.Id,
- chel.FName,
- chel.SName,
- chel.TName,
- chel.Birthday.ToString("yyyy.MM.dd"),
- chel.Male ? "Муж" : "Жен"
- });
- }
- if (chelGridView.Rows.Count > 0)
- chelGridView.Rows[0].Selected = true;
- }
- catch (Exception e) { ShowError(e.Message); }
- }
- private Chel selectedChel()
- {
- try
- {
- if (chelGridView.SelectedRows.Count != 1) throw new Exception("Человек не выбран.");
- var chel = FuncDB.GetChel((int)chelGridView.SelectedRows[0].Cells[0].Value);
- return chel;
- }
- catch (Exception e) { ShowError(e.Message); return null; }
- }
-
- public bool isCanceled = false;
- private Chel chel = null;
- public SelectChelForm(Chel chel = null)
- {
- InitializeComponent();
- resetChelTable();
- }
-
- private void workButton_Click(object sender, EventArgs e)
- {
- try
- {
- chel = selectedChel();
- this.Close();
- }
- catch (Exception ex) {
- chel = null;
- ShowError(ex.Message);
- }
- }
- private void canceledButton_Click(object sender, EventArgs e)
- {
- isCanceled = true;
- this.Close();
- }
- }
-}
diff --git a/SupportForms/WorkChelForm.Designer.cs b/SupportForms/WorkChelForm.Designer.cs
index d186be6..2e9a584 100644
--- a/SupportForms/WorkChelForm.Designer.cs
+++ b/SupportForms/WorkChelForm.Designer.cs
@@ -51,6 +51,9 @@ namespace Diplom_O.SupportForms
this.birthdayBox = new System.Windows.Forms.DateTimePicker();
this.snilsBox = new System.Windows.Forms.MaskedTextBox();
this.innBox = new System.Windows.Forms.MaskedTextBox();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.phoneBox = new System.Windows.Forms.MaskedTextBox();
+ this.label10 = new System.Windows.Forms.Label();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
//
@@ -72,7 +75,7 @@ namespace Diplom_O.SupportForms
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.errorLabel});
- this.statusStrip1.Location = new System.Drawing.Point(0, 428);
+ this.statusStrip1.Location = new System.Drawing.Point(0, 485);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(332, 22);
this.statusStrip1.TabIndex = 2;
@@ -89,7 +92,7 @@ namespace Diplom_O.SupportForms
//
// workButton
//
- this.workButton.Location = new System.Drawing.Point(245, 402);
+ this.workButton.Location = new System.Drawing.Point(245, 451);
this.workButton.Name = "workButton";
this.workButton.Size = new System.Drawing.Size(75, 23);
this.workButton.TabIndex = 9;
@@ -99,7 +102,7 @@ namespace Diplom_O.SupportForms
//
// canceledButton
//
- this.canceledButton.Location = new System.Drawing.Point(164, 402);
+ this.canceledButton.Location = new System.Drawing.Point(164, 451);
this.canceledButton.Name = "canceledButton";
this.canceledButton.Size = new System.Drawing.Size(75, 23);
this.canceledButton.TabIndex = 10;
@@ -162,7 +165,7 @@ namespace Diplom_O.SupportForms
// label6
//
this.label6.AutoSize = true;
- this.label6.Location = new System.Drawing.Point(12, 145);
+ this.label6.Location = new System.Drawing.Point(60, 145);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(38, 13);
this.label6.TabIndex = 34;
@@ -171,7 +174,7 @@ namespace Diplom_O.SupportForms
// label7
//
this.label7.AutoSize = true;
- this.label7.Location = new System.Drawing.Point(12, 249);
+ this.label7.Location = new System.Drawing.Point(67, 275);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(31, 13);
this.label7.TabIndex = 35;
@@ -180,7 +183,7 @@ namespace Diplom_O.SupportForms
// label8
//
this.label8.AutoSize = true;
- this.label8.Location = new System.Drawing.Point(12, 275);
+ this.label8.Location = new System.Drawing.Point(53, 301);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(45, 13);
this.label8.TabIndex = 36;
@@ -189,7 +192,7 @@ namespace Diplom_O.SupportForms
// label9
//
this.label9.AutoSize = true;
- this.label9.Location = new System.Drawing.Point(12, 301);
+ this.label9.Location = new System.Drawing.Point(48, 327);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(50, 13);
this.label9.TabIndex = 37;
@@ -205,7 +208,7 @@ namespace Diplom_O.SupportForms
//
// pasportBox
//
- this.pasportBox.Location = new System.Drawing.Point(104, 298);
+ this.pasportBox.Location = new System.Drawing.Point(104, 324);
this.pasportBox.Name = "pasportBox";
this.pasportBox.Size = new System.Drawing.Size(216, 98);
this.pasportBox.TabIndex = 8;
@@ -233,7 +236,7 @@ namespace Diplom_O.SupportForms
//
// snilsBox
//
- this.snilsBox.Location = new System.Drawing.Point(104, 272);
+ this.snilsBox.Location = new System.Drawing.Point(104, 298);
this.snilsBox.Mask = "000-000-000 00";
this.snilsBox.Name = "snilsBox";
this.snilsBox.Size = new System.Drawing.Size(216, 20);
@@ -241,18 +244,48 @@ namespace Diplom_O.SupportForms
//
// innBox
//
- this.innBox.Location = new System.Drawing.Point(104, 246);
+ this.innBox.Location = new System.Drawing.Point(104, 272);
this.innBox.Mask = "000000000000";
this.innBox.Name = "innBox";
this.innBox.Size = new System.Drawing.Size(216, 20);
this.innBox.TabIndex = 6;
//
+ // checkBox1
+ //
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Location = new System.Drawing.Point(104, 428);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(82, 17);
+ this.checkBox1.TabIndex = 38;
+ this.checkBox1.Text = "Пенсионер";
+ this.checkBox1.UseVisualStyleBackColor = true;
+ //
+ // phoneBox
+ //
+ this.phoneBox.Location = new System.Drawing.Point(104, 246);
+ this.phoneBox.Mask = "+7(000)000-00-00";
+ this.phoneBox.Name = "phoneBox";
+ this.phoneBox.Size = new System.Drawing.Size(216, 20);
+ this.phoneBox.TabIndex = 39;
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(46, 249);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(52, 13);
+ this.label10.TabIndex = 40;
+ this.label10.Text = "Телефон";
+ //
// WorkChelForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(332, 450);
+ this.ClientSize = new System.Drawing.Size(332, 507);
this.ControlBox = false;
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.phoneBox);
+ this.Controls.Add(this.checkBox1);
this.Controls.Add(this.innBox);
this.Controls.Add(this.snilsBox);
this.Controls.Add(this.birthdayBox);
@@ -310,5 +343,8 @@ namespace Diplom_O.SupportForms
private System.Windows.Forms.DateTimePicker birthdayBox;
private System.Windows.Forms.MaskedTextBox snilsBox;
private System.Windows.Forms.MaskedTextBox innBox;
- }
+ private System.Windows.Forms.CheckBox checkBox1;
+ private System.Windows.Forms.MaskedTextBox phoneBox;
+ private System.Windows.Forms.Label label10;
+ }
}
\ No newline at end of file
diff --git a/SupportForms/WorkChelForm.cs b/SupportForms/WorkChelForm.cs
index 2f40f03..0681142 100644
--- a/SupportForms/WorkChelForm.cs
+++ b/SupportForms/WorkChelForm.cs
@@ -13,22 +13,6 @@ namespace Diplom_O.SupportForms
{
public partial class WorkChelForm : Form
{
- private Task errDrop;
- private void ShowError(string msg = null)
- {
- errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
- errorLabel.Visible = true;
- errDrop = new Task(() =>
- {
- var fd = errDrop.Id;
- Task.Delay(5000).Wait();
- if (errDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
- else errorLabel.Visible = false;
- });
- errDrop.Start();
- }
-
public bool isCanceled = false;
private Chel chel = null;
public WorkChelForm(Chel chel = null)
@@ -48,14 +32,16 @@ namespace Diplom_O.SupportForms
maleBox.SelectedIndex = chel.Male ? 0 : 1;
birthdayBox.Value = chel.Birthday;
addressBox.Text = chel.Address;
+ phoneBox.Text = chel.Phone;
innBox.Text = chel.INN;
snilsBox.Text = chel.SNILS;
pasportBox.Text = chel.Pasport;
+ checkBox1.Checked = chel.Pensia;
}
}
catch (Exception e)
{
- ShowError(e.Message);
+ this.ShowError(errorLabel, e.Message);
workButton.Enabled = false;
}
}
@@ -64,39 +50,34 @@ namespace Diplom_O.SupportForms
{
try
{
- if (maleBox.SelectedIndex == -1) throw new Exception("Пол не указан.");
+ if (maleBox.SelectedIndex == -1)
+ throw new Exception("Пол не указан.");
+ var _chel = new Chel();
+ _chel.FName = fNameBox.Text;
+ _chel.SName = sNameBox.Text;
+ _chel.TName = tNameBox.Text;
+ _chel.Male = maleBox.SelectedIndex == 0;
+ _chel.Birthday = birthdayBox.Value;
+ _chel.Address = addressBox.Text;
+ _chel.Phone = phoneBox.Text;
+ _chel.INN = innBox.Text;
+ _chel.SNILS = snilsBox.Text;
+ _chel.Pasport = pasportBox.Text;
+ _chel.Pensia = checkBox1.Checked;
+ FuncDB.ChelCheckValid(_chel);
if (chel == null)
- {
- var s = new Chel()
- {
- FName = fNameBox.Text,
- SName = sNameBox.Text,
- TName = tNameBox.Text,
- Male = maleBox.SelectedIndex == 0,
- Birthday = birthdayBox.Value,
- Address = addressBox.Text,
- INN = innBox.Text,
- SNILS = snilsBox.Text,
- Pasport = pasportBox.Text
- };
- FuncDB.AddChel(s);
- }
+ FuncDB.ChelAdd(_chel);
else
- {
- chel.FName = fNameBox.Text;
- chel.SName = sNameBox.Text;
- chel.TName = tNameBox.Text;
- chel.Male = maleBox.SelectedIndex == 0;
- chel.Birthday = birthdayBox.Value;
- chel.Address = addressBox.Text;
- chel.INN = innBox.Text;
- chel.SNILS = snilsBox.Text;
- chel.Pasport = pasportBox.Text;
- FuncDB.ChangeChel(chel);
+ {
+ _chel.Id = chel.Id;
+ FuncDB.ChelChange(_chel);
}
this.Close();
}
- catch (Exception ex) { ShowError(ex.Message); }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
}
private void canceledButton_Click(object sender, EventArgs e)
{
diff --git a/SupportForms/WorkShtatForm.Designer.cs b/SupportForms/WorkShtatForm.Designer.cs
index 7a2f73c..38b6afd 100644
--- a/SupportForms/WorkShtatForm.Designer.cs
+++ b/SupportForms/WorkShtatForm.Designer.cs
@@ -60,7 +60,7 @@ namespace Diplom_O.SupportForms
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.errorLabel,
this.busySizeLabel});
- this.statusStrip1.Location = new System.Drawing.Point(0, 90);
+ this.statusStrip1.Location = new System.Drawing.Point(0, 94);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(262, 22);
this.statusStrip1.TabIndex = 2;
@@ -102,7 +102,7 @@ namespace Diplom_O.SupportForms
//
// workButton
//
- this.workButton.Location = new System.Drawing.Point(175, 64);
+ this.workButton.Location = new System.Drawing.Point(174, 64);
this.workButton.Name = "workButton";
this.workButton.Size = new System.Drawing.Size(75, 23);
this.workButton.TabIndex = 2;
@@ -112,7 +112,7 @@ namespace Diplom_O.SupportForms
//
// canceledButton
//
- this.canceledButton.Location = new System.Drawing.Point(94, 64);
+ this.canceledButton.Location = new System.Drawing.Point(93, 64);
this.canceledButton.Name = "canceledButton";
this.canceledButton.Size = new System.Drawing.Size(75, 23);
this.canceledButton.TabIndex = 3;
@@ -124,7 +124,7 @@ namespace Diplom_O.SupportForms
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(262, 112);
+ this.ClientSize = new System.Drawing.Size(262, 116);
this.ControlBox = false;
this.Controls.Add(this.canceledButton);
this.Controls.Add(this.workButton);
@@ -156,5 +156,5 @@ namespace Diplom_O.SupportForms
private System.Windows.Forms.Button workButton;
private System.Windows.Forms.Button canceledButton;
private System.Windows.Forms.ToolStripStatusLabel busySizeLabel;
- }
+ }
}
\ No newline at end of file
diff --git a/SupportForms/WorkShtatForm.cs b/SupportForms/WorkShtatForm.cs
index 6420713..f9f957b 100644
--- a/SupportForms/WorkShtatForm.cs
+++ b/SupportForms/WorkShtatForm.cs
@@ -13,24 +13,9 @@ namespace Diplom_O.SupportForms
{
public partial class WorkShtatForm : Form
{
- private Task errDrop;
- private void ShowError(string msg = null)
- {
- errorLabel.Text = string.IsNullOrEmpty(msg) ? "Неизвестная ошибка." : msg;
- errorLabel.Visible = true;
- errDrop = new Task(() =>
- {
- var fd = errDrop.Id;
- Task.Delay(5000).Wait();
- if (errDrop.Id == fd)
- if (InvokeRequired) Invoke((Action)(() => { errorLabel.Visible = false; }));
- else errorLabel.Visible = false;
- });
- errDrop.Start();
- }
-
public bool isCanceled = false;
private Shtat shtat = null;
+
public WorkShtatForm(Shtat shtat = null)
{
InitializeComponent();
@@ -42,12 +27,13 @@ namespace Diplom_O.SupportForms
workButton.Text = "Изменить";
doljBox.Text = shtat.Doljnost;
kolvoBox.Text = shtat.Size.ToString();
- busySizeLabel.Text = "Занято: " + FuncDB.BusySizeShtat(shtat.Id);
+ busySizeLabel.Text = "Занято: " + (shtat.Size - FuncDB.ShtatFreeSpaceById(shtat.Id));
+ busySizeLabel.Visible = true;
}
}
catch (Exception e)
{
- ShowError(e.Message);
+ this.ShowError(errorLabel, e.Message);
workButton.Enabled = false;
}
}
@@ -56,21 +42,24 @@ namespace Diplom_O.SupportForms
{
try
{
- if (!int.TryParse(kolvoBox.Text, out int kolvo)) throw new Exception("Ошибка указания количества.");
+ if (string.IsNullOrEmpty(doljBox.Text))
+ throw new Exception("Ошибка указания должности.");
+ if (!int.TryParse(kolvoBox.Text, out int kolvo))
+ throw new Exception("Ошибка указания количества.");
if (shtat == null)
{
var s = new Shtat() { Doljnost = doljBox.Text, Size = kolvo };
- FuncDB.AddShtat(s);
+ FuncDB.ShtatAdd(s);
}
else
{
shtat.Doljnost = doljBox.Text;
shtat.Size = kolvo;
- FuncDB.ChangeShtat(shtat);
+ FuncDB.ShtatChange(shtat);
}
this.Close();
}
- catch (Exception ex) { ShowError(ex.Message); }
+ catch (Exception ex) { this.ShowError(errorLabel, ex.Message); }
}
private void canceledButton_Click(object sender, EventArgs e)
{
diff --git a/SupportForms/WorkerForm.Designer.cs b/SupportForms/WorkerForm.Designer.cs
new file mode 100644
index 0000000..c4367e3
--- /dev/null
+++ b/SupportForms/WorkerForm.Designer.cs
@@ -0,0 +1,252 @@
+
+namespace Diplom_O.SupportForms
+{
+ partial class WorkerForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.statusStrip1 = new System.Windows.Forms.StatusStrip();
+ this.errorLabel = new System.Windows.Forms.ToolStripStatusLabel();
+ this.workButton = new System.Windows.Forms.Button();
+ this.canceledButton = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.linkSelectFIO = new System.Windows.Forms.LinkLabel();
+ this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
+ this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker();
+ this.tabNumBox = new System.Windows.Forms.TextBox();
+ this.linkDolj = new System.Windows.Forms.LinkLabel();
+ this.label3 = new System.Windows.Forms.Label();
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.checkBox2 = new System.Windows.Forms.CheckBox();
+ this.statusStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // statusStrip1
+ //
+ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.errorLabel});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 253);
+ this.statusStrip1.Name = "statusStrip1";
+ this.statusStrip1.Size = new System.Drawing.Size(332, 22);
+ this.statusStrip1.TabIndex = 2;
+ this.statusStrip1.Text = "statusStrip1";
+ //
+ // errorLabel
+ //
+ this.errorLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.errorLabel.ForeColor = System.Drawing.Color.Red;
+ this.errorLabel.Name = "errorLabel";
+ this.errorLabel.Size = new System.Drawing.Size(57, 17);
+ this.errorLabel.Text = "Ошибка.";
+ this.errorLabel.Visible = false;
+ //
+ // workButton
+ //
+ this.workButton.Location = new System.Drawing.Point(248, 191);
+ this.workButton.Name = "workButton";
+ this.workButton.Size = new System.Drawing.Size(75, 23);
+ this.workButton.TabIndex = 9;
+ this.workButton.Text = "Добавить";
+ this.workButton.UseVisualStyleBackColor = true;
+ this.workButton.Click += new System.EventHandler(this.workButton_Click);
+ //
+ // canceledButton
+ //
+ this.canceledButton.Location = new System.Drawing.Point(167, 191);
+ this.canceledButton.Name = "canceledButton";
+ this.canceledButton.Size = new System.Drawing.Size(75, 23);
+ this.canceledButton.TabIndex = 10;
+ this.canceledButton.Text = "Отмена";
+ this.canceledButton.UseVisualStyleBackColor = true;
+ this.canceledButton.Click += new System.EventHandler(this.canceledButton_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(17, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(81, 13);
+ this.label1.TabIndex = 29;
+ this.label1.Text = "Фамилия И.О.";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(23, 93);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(78, 13);
+ this.label2.TabIndex = 30;
+ this.label2.Text = "Табельный №";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(39, 145);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(62, 13);
+ this.label4.TabIndex = 32;
+ this.label4.Text = "Конец раб.";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(33, 116);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(68, 13);
+ this.label5.TabIndex = 33;
+ this.label5.Text = "Начало раб.";
+ //
+ // linkSelectFIO
+ //
+ this.linkSelectFIO.AutoSize = true;
+ this.linkSelectFIO.Location = new System.Drawing.Point(104, 15);
+ this.linkSelectFIO.Name = "linkSelectFIO";
+ this.linkSelectFIO.Size = new System.Drawing.Size(110, 13);
+ this.linkSelectFIO.TabIndex = 38;
+ this.linkSelectFIO.TabStop = true;
+ this.linkSelectFIO.Text = "Выбрать человека...";
+ this.linkSelectFIO.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkSelectFIO_LinkClicked);
+ //
+ // dateTimePicker1
+ //
+ this.dateTimePicker1.CustomFormat = "yyyy.MM.dd";
+ this.dateTimePicker1.Location = new System.Drawing.Point(107, 116);
+ this.dateTimePicker1.Name = "dateTimePicker1";
+ this.dateTimePicker1.Size = new System.Drawing.Size(216, 20);
+ this.dateTimePicker1.TabIndex = 40;
+ //
+ // dateTimePicker2
+ //
+ this.dateTimePicker2.CustomFormat = "yyyy.MM.dd";
+ this.dateTimePicker2.Location = new System.Drawing.Point(107, 142);
+ this.dateTimePicker2.Name = "dateTimePicker2";
+ this.dateTimePicker2.Size = new System.Drawing.Size(216, 20);
+ this.dateTimePicker2.TabIndex = 41;
+ //
+ // tabNumBox
+ //
+ this.tabNumBox.Location = new System.Drawing.Point(107, 90);
+ this.tabNumBox.Name = "tabNumBox";
+ this.tabNumBox.Size = new System.Drawing.Size(216, 20);
+ this.tabNumBox.TabIndex = 1;
+ //
+ // linkDolj
+ //
+ this.linkDolj.AutoSize = true;
+ this.linkDolj.Location = new System.Drawing.Point(104, 67);
+ this.linkDolj.Name = "linkDolj";
+ this.linkDolj.Size = new System.Drawing.Size(118, 13);
+ this.linkDolj.TabIndex = 43;
+ this.linkDolj.TabStop = true;
+ this.linkDolj.Text = "Выбрать должность...";
+ this.linkDolj.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDolj_LinkClicked);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(33, 67);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(65, 13);
+ this.label3.TabIndex = 44;
+ this.label3.Text = "Должность";
+ //
+ // checkBox1
+ //
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Location = new System.Drawing.Point(189, 168);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(134, 17);
+ this.checkBox1.TabIndex = 45;
+ this.checkBox1.Text = "По настоящее время";
+ this.checkBox1.UseVisualStyleBackColor = true;
+ this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
+ //
+ // checkBox2
+ //
+ this.checkBox2.AutoSize = true;
+ this.checkBox2.Location = new System.Drawing.Point(194, 40);
+ this.checkBox2.Name = "checkBox2";
+ this.checkBox2.Size = new System.Drawing.Size(126, 17);
+ this.checkBox2.TabIndex = 49;
+ this.checkBox2.Text = "Иное место работы";
+ this.checkBox2.UseVisualStyleBackColor = true;
+ this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged);
+ //
+ // WorkerForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(332, 275);
+ this.ControlBox = false;
+ this.Controls.Add(this.checkBox2);
+ this.Controls.Add(this.checkBox1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.linkDolj);
+ this.Controls.Add(this.dateTimePicker2);
+ this.Controls.Add(this.dateTimePicker1);
+ this.Controls.Add(this.linkSelectFIO);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.canceledButton);
+ this.Controls.Add(this.workButton);
+ this.Controls.Add(this.statusStrip1);
+ this.Controls.Add(this.tabNumBox);
+ this.MaximizeBox = false;
+ this.Name = "WorkerForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Сотрудник";
+ this.statusStrip1.ResumeLayout(false);
+ this.statusStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.StatusStrip statusStrip1;
+ private System.Windows.Forms.ToolStripStatusLabel errorLabel;
+ private System.Windows.Forms.Button workButton;
+ private System.Windows.Forms.Button canceledButton;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.LinkLabel linkSelectFIO;
+ private System.Windows.Forms.DateTimePicker dateTimePicker1;
+ private System.Windows.Forms.DateTimePicker dateTimePicker2;
+ private System.Windows.Forms.TextBox tabNumBox;
+ private System.Windows.Forms.LinkLabel linkDolj;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.CheckBox checkBox1;
+ private System.Windows.Forms.CheckBox checkBox2;
+ }
+}
\ No newline at end of file
diff --git a/SupportForms/WorkerForm.cs b/SupportForms/WorkerForm.cs
new file mode 100644
index 0000000..0c138f3
--- /dev/null
+++ b/SupportForms/WorkerForm.cs
@@ -0,0 +1,169 @@
+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.Forms;
+using Diplom_O.DataBase;
+
+namespace Diplom_O.SupportForms
+{
+ public partial class WorkerForm : Form
+ {
+ private Chel chel = null;
+ private void ResetLinkFIO()
+ {
+ if (chel == null)
+ {
+ linkSelectFIO.Text = "Выбрать человека...";
+ return;
+ }
+ var res = chel.FName.ToString() + " " +
+ chel.SName[0].ToString() + "." +
+ ((!string.IsNullOrEmpty(chel.TName)) ?
+ chel.TName[0].ToString() + "." : "");
+ linkSelectFIO.Text = res;
+ }
+
+ private int? shtatId = null;
+ private void ResetLinkShtat()
+ {
+ if (shtatId == null)
+ {
+ linkDolj.Text = "Выбрать должность...";
+ return;
+ }
+ var res = FuncDB.ShtatGetById(shtatId.Value)?.Doljnost;
+ linkDolj.Text = res;
+ }
+
+ public bool isCanceled = false;
+ private Rabotnik rabotnik = null;
+ public WorkerForm(Rabotnik rabotnik = null, bool create = false)
+ {
+ InitializeComponent();
+ try
+ {
+ ResetLinkFIO();
+ ResetLinkShtat();
+ tabNumBox.Text = "";
+ dateTimePicker1.Value = DateTime.Now;
+ dateTimePicker2.Value = DateTime.Now;
+
+ if (rabotnik == null) return;
+
+
+ chel = FuncDB.ChelGetById(rabotnik.ChelId);
+ ResetLinkFIO();
+ linkSelectFIO.Enabled = false;
+
+ if (create)
+ return;
+
+ this.rabotnik = rabotnik;
+ workButton.Text = "Изменить";
+ chel = FuncDB.ChelGetById(rabotnik.ChelId);
+ ResetLinkFIO();
+ if (checkBox2.Checked)
+ shtatId = null;
+ else
+ shtatId = FuncDB.ShtatGetById(rabotnik.ShtatId.Value).Id;
+ ResetLinkShtat();
+ tabNumBox.Text = rabotnik.TabNum;
+ dateTimePicker1.Value = rabotnik.Start;
+ if (rabotnik.End.HasValue)
+ {
+ checkBox1.Checked = false;
+ dateTimePicker2.Value = rabotnik.End.Value;
+ }
+ else
+ checkBox1.Checked = true;
+ }
+ catch (Exception e)
+ {
+ this.ShowError(errorLabel, e.Message);
+ workButton.Enabled = false;
+ }
+ }
+
+ private void linkSelectFIO_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new ChelForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ chel = null;
+ else
+ chel = form.formResult;
+ ResetLinkFIO();
+ }
+ private void linkDolj_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ var form = new ShtatForm(true);
+ form.ShowDialog();
+ if (form.isCanceled)
+ shtatId = null;
+ else
+ shtatId = form.formResult.Id;
+ ResetLinkShtat();
+ }
+ private void workButton_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (chel == null)
+ throw new Exception("Не выбран человек.");
+ if (!checkBox2.Checked && !shtatId.HasValue)
+ throw new Exception("Не выбрана должность.");
+ DateTime start = dateTimePicker1.Value;
+ start = new DateTime(start.Year, start.Month, start.Day, 0, 0, 0);
+ DateTime? end = null;
+ if (!checkBox1.Checked)
+ {
+ end = dateTimePicker2.Value;
+ end = new DateTime(end.Value.Year, end.Value.Month, end.Value.Day, 23, 59, 59);
+ }
+
+ var _rabotnik = new Rabotnik()
+ {
+ ChelId = chel.Id,
+ ShtatId = checkBox2.Checked ? null : shtatId,
+ AnotherWork = checkBox2.Checked,
+ TabNum = checkBox2.Checked ? "" : tabNumBox.Text,
+ Start = start,
+ End = end
+ };
+ if (rabotnik == null)
+ FuncDB.RabotnikAdd(_rabotnik);
+ else
+ {
+ _rabotnik.Id = rabotnik.Id;
+ FuncDB.RabotnikChange(_rabotnik);
+ }
+ this.Close();
+ }
+ catch (Exception ex)
+ {
+ this.ShowError(errorLabel, ex.Message);
+ }
+ }
+ private void canceledButton_Click(object sender, EventArgs e)
+ {
+ isCanceled = true;
+ this.Close();
+ }
+
+ private void checkBox1_CheckedChanged(object sender, EventArgs e)
+ {
+ dateTimePicker2.Enabled = !checkBox1.Checked;
+ }
+
+ private void checkBox2_CheckedChanged(object sender, EventArgs e)
+ {
+ linkDolj.Enabled = !checkBox2.Checked;
+ tabNumBox.Enabled = !checkBox2.Checked;
+ }
+ }
+}
diff --git a/SupportForms/WorkerForm.resx b/SupportForms/WorkerForm.resx
new file mode 100644
index 0000000..174ebc7
--- /dev/null
+++ b/SupportForms/WorkerForm.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/bin/Debug/Diplom O.exe b/bin/Debug/Diplom O.exe
deleted file mode 100644
index 518aec5..0000000
Binary files a/bin/Debug/Diplom O.exe and /dev/null differ
diff --git a/bin/Debug/Diplom O.pdb b/bin/Debug/Diplom O.pdb
deleted file mode 100644
index 831a202..0000000
Binary files a/bin/Debug/Diplom O.pdb and /dev/null differ
diff --git a/bin/Debug/Diplom_O.db b/bin/Debug/Diplom_O.db
deleted file mode 100644
index 54d99f3..0000000
Binary files a/bin/Debug/Diplom_O.db and /dev/null differ
diff --git a/bin/Release/Diplom O.exe b/bin/Release/Diplom O.exe
new file mode 100644
index 0000000..ad70448
Binary files /dev/null and b/bin/Release/Diplom O.exe differ
diff --git a/bin/Debug/Diplom O.exe.config b/bin/Release/Diplom O.exe.config
similarity index 100%
rename from bin/Debug/Diplom O.exe.config
rename to bin/Release/Diplom O.exe.config
diff --git a/bin/Release/Diplom O.pdb b/bin/Release/Diplom O.pdb
new file mode 100644
index 0000000..21d2039
Binary files /dev/null and b/bin/Release/Diplom O.pdb differ
diff --git a/bin/Release/Diplom_O.db b/bin/Release/Diplom_O.db
new file mode 100644
index 0000000..71d5cc6
Binary files /dev/null and b/bin/Release/Diplom_O.db differ
diff --git a/bin/Debug/Microsoft.Data.Sqlite.dll b/bin/Release/Microsoft.Data.Sqlite.dll
similarity index 100%
rename from bin/Debug/Microsoft.Data.Sqlite.dll
rename to bin/Release/Microsoft.Data.Sqlite.dll
diff --git a/bin/Debug/Microsoft.Data.Sqlite.xml b/bin/Release/Microsoft.Data.Sqlite.xml
similarity index 100%
rename from bin/Debug/Microsoft.Data.Sqlite.xml
rename to bin/Release/Microsoft.Data.Sqlite.xml
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.dll b/bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.dll
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.dll
rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.dll
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.xml b/bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.xml
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.Design.xml
rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.Design.xml
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.dll b/bin/Release/Microsoft.EntityFrameworkCore.Relational.dll
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.dll
rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.dll
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Relational.xml b/bin/Release/Microsoft.EntityFrameworkCore.Relational.xml
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Relational.xml
rename to bin/Release/Microsoft.EntityFrameworkCore.Relational.xml
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.dll b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.dll
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.dll
rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.dll
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.xml b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.xml
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.Design.xml
rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.Design.xml
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.dll b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.dll
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.dll
rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.dll
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.xml b/bin/Release/Microsoft.EntityFrameworkCore.Sqlite.xml
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.Sqlite.xml
rename to bin/Release/Microsoft.EntityFrameworkCore.Sqlite.xml
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.dll b/bin/Release/Microsoft.EntityFrameworkCore.dll
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.dll
rename to bin/Release/Microsoft.EntityFrameworkCore.dll
diff --git a/bin/Debug/Microsoft.EntityFrameworkCore.xml b/bin/Release/Microsoft.EntityFrameworkCore.xml
similarity index 100%
rename from bin/Debug/Microsoft.EntityFrameworkCore.xml
rename to bin/Release/Microsoft.EntityFrameworkCore.xml
diff --git a/bin/Debug/Microsoft.Extensions.Caching.Abstractions.dll b/bin/Release/Microsoft.Extensions.Caching.Abstractions.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Caching.Abstractions.dll
rename to bin/Release/Microsoft.Extensions.Caching.Abstractions.dll
diff --git a/bin/Debug/Microsoft.Extensions.Caching.Abstractions.xml b/bin/Release/Microsoft.Extensions.Caching.Abstractions.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Caching.Abstractions.xml
rename to bin/Release/Microsoft.Extensions.Caching.Abstractions.xml
diff --git a/bin/Debug/Microsoft.Extensions.Caching.Memory.dll b/bin/Release/Microsoft.Extensions.Caching.Memory.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Caching.Memory.dll
rename to bin/Release/Microsoft.Extensions.Caching.Memory.dll
diff --git a/bin/Debug/Microsoft.Extensions.Caching.Memory.xml b/bin/Release/Microsoft.Extensions.Caching.Memory.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Caching.Memory.xml
rename to bin/Release/Microsoft.Extensions.Caching.Memory.xml
diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.dll
rename to bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.dll
diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.xml b/bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.DependencyInjection.Abstractions.xml
rename to bin/Release/Microsoft.Extensions.DependencyInjection.Abstractions.xml
diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.dll b/bin/Release/Microsoft.Extensions.DependencyInjection.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.DependencyInjection.dll
rename to bin/Release/Microsoft.Extensions.DependencyInjection.dll
diff --git a/bin/Debug/Microsoft.Extensions.DependencyInjection.xml b/bin/Release/Microsoft.Extensions.DependencyInjection.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.DependencyInjection.xml
rename to bin/Release/Microsoft.Extensions.DependencyInjection.xml
diff --git a/bin/Debug/Microsoft.Extensions.Logging.Abstractions.dll b/bin/Release/Microsoft.Extensions.Logging.Abstractions.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Logging.Abstractions.dll
rename to bin/Release/Microsoft.Extensions.Logging.Abstractions.dll
diff --git a/bin/Debug/Microsoft.Extensions.Logging.Abstractions.xml b/bin/Release/Microsoft.Extensions.Logging.Abstractions.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Logging.Abstractions.xml
rename to bin/Release/Microsoft.Extensions.Logging.Abstractions.xml
diff --git a/bin/Debug/Microsoft.Extensions.Logging.dll b/bin/Release/Microsoft.Extensions.Logging.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Logging.dll
rename to bin/Release/Microsoft.Extensions.Logging.dll
diff --git a/bin/Debug/Microsoft.Extensions.Logging.xml b/bin/Release/Microsoft.Extensions.Logging.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Logging.xml
rename to bin/Release/Microsoft.Extensions.Logging.xml
diff --git a/bin/Debug/Microsoft.Extensions.Options.dll b/bin/Release/Microsoft.Extensions.Options.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Options.dll
rename to bin/Release/Microsoft.Extensions.Options.dll
diff --git a/bin/Debug/Microsoft.Extensions.Options.xml b/bin/Release/Microsoft.Extensions.Options.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Options.xml
rename to bin/Release/Microsoft.Extensions.Options.xml
diff --git a/bin/Debug/Microsoft.Extensions.Primitives.dll b/bin/Release/Microsoft.Extensions.Primitives.dll
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Primitives.dll
rename to bin/Release/Microsoft.Extensions.Primitives.dll
diff --git a/bin/Debug/Microsoft.Extensions.Primitives.xml b/bin/Release/Microsoft.Extensions.Primitives.xml
similarity index 100%
rename from bin/Debug/Microsoft.Extensions.Primitives.xml
rename to bin/Release/Microsoft.Extensions.Primitives.xml
diff --git a/bin/Debug/Remotion.Linq.dll b/bin/Release/Remotion.Linq.dll
similarity index 100%
rename from bin/Debug/Remotion.Linq.dll
rename to bin/Release/Remotion.Linq.dll
diff --git a/bin/Debug/Remotion.Linq.xml b/bin/Release/Remotion.Linq.xml
similarity index 100%
rename from bin/Debug/Remotion.Linq.xml
rename to bin/Release/Remotion.Linq.xml
diff --git a/bin/Debug/SQLitePCLRaw.batteries_v2.dll b/bin/Release/SQLitePCLRaw.batteries_v2.dll
similarity index 100%
rename from bin/Debug/SQLitePCLRaw.batteries_v2.dll
rename to bin/Release/SQLitePCLRaw.batteries_v2.dll
diff --git a/bin/Debug/SQLitePCLRaw.core.dll b/bin/Release/SQLitePCLRaw.core.dll
similarity index 100%
rename from bin/Debug/SQLitePCLRaw.core.dll
rename to bin/Release/SQLitePCLRaw.core.dll
diff --git a/bin/Debug/SQLitePCLRaw.nativelibrary.dll b/bin/Release/SQLitePCLRaw.nativelibrary.dll
similarity index 100%
rename from bin/Debug/SQLitePCLRaw.nativelibrary.dll
rename to bin/Release/SQLitePCLRaw.nativelibrary.dll
diff --git a/bin/Debug/SQLitePCLRaw.provider.dynamic_cdecl.dll b/bin/Release/SQLitePCLRaw.provider.dynamic_cdecl.dll
similarity index 100%
rename from bin/Debug/SQLitePCLRaw.provider.dynamic_cdecl.dll
rename to bin/Release/SQLitePCLRaw.provider.dynamic_cdecl.dll
diff --git a/bin/Debug/System.Buffers.dll b/bin/Release/System.Buffers.dll
similarity index 100%
rename from bin/Debug/System.Buffers.dll
rename to bin/Release/System.Buffers.dll
diff --git a/bin/Debug/System.Buffers.xml b/bin/Release/System.Buffers.xml
similarity index 100%
rename from bin/Debug/System.Buffers.xml
rename to bin/Release/System.Buffers.xml
diff --git a/bin/Debug/System.Collections.Immutable.dll b/bin/Release/System.Collections.Immutable.dll
similarity index 100%
rename from bin/Debug/System.Collections.Immutable.dll
rename to bin/Release/System.Collections.Immutable.dll
diff --git a/bin/Debug/System.Collections.Immutable.xml b/bin/Release/System.Collections.Immutable.xml
similarity index 100%
rename from bin/Debug/System.Collections.Immutable.xml
rename to bin/Release/System.Collections.Immutable.xml
diff --git a/bin/Debug/System.Diagnostics.DiagnosticSource.dll b/bin/Release/System.Diagnostics.DiagnosticSource.dll
similarity index 100%
rename from bin/Debug/System.Diagnostics.DiagnosticSource.dll
rename to bin/Release/System.Diagnostics.DiagnosticSource.dll
diff --git a/bin/Debug/System.Diagnostics.DiagnosticSource.xml b/bin/Release/System.Diagnostics.DiagnosticSource.xml
similarity index 100%
rename from bin/Debug/System.Diagnostics.DiagnosticSource.xml
rename to bin/Release/System.Diagnostics.DiagnosticSource.xml
diff --git a/bin/Debug/System.Interactive.Async.dll b/bin/Release/System.Interactive.Async.dll
similarity index 100%
rename from bin/Debug/System.Interactive.Async.dll
rename to bin/Release/System.Interactive.Async.dll
diff --git a/bin/Debug/System.Interactive.Async.xml b/bin/Release/System.Interactive.Async.xml
similarity index 100%
rename from bin/Debug/System.Interactive.Async.xml
rename to bin/Release/System.Interactive.Async.xml
diff --git a/bin/Debug/System.Memory.dll b/bin/Release/System.Memory.dll
similarity index 100%
rename from bin/Debug/System.Memory.dll
rename to bin/Release/System.Memory.dll
diff --git a/bin/Debug/System.Memory.xml b/bin/Release/System.Memory.xml
similarity index 100%
rename from bin/Debug/System.Memory.xml
rename to bin/Release/System.Memory.xml
diff --git a/bin/Debug/System.Numerics.Vectors.dll b/bin/Release/System.Numerics.Vectors.dll
similarity index 100%
rename from bin/Debug/System.Numerics.Vectors.dll
rename to bin/Release/System.Numerics.Vectors.dll
diff --git a/bin/Debug/System.Numerics.Vectors.xml b/bin/Release/System.Numerics.Vectors.xml
similarity index 100%
rename from bin/Debug/System.Numerics.Vectors.xml
rename to bin/Release/System.Numerics.Vectors.xml
diff --git a/bin/Debug/System.Runtime.CompilerServices.Unsafe.dll b/bin/Release/System.Runtime.CompilerServices.Unsafe.dll
similarity index 100%
rename from bin/Debug/System.Runtime.CompilerServices.Unsafe.dll
rename to bin/Release/System.Runtime.CompilerServices.Unsafe.dll
diff --git a/bin/Debug/System.Runtime.CompilerServices.Unsafe.xml b/bin/Release/System.Runtime.CompilerServices.Unsafe.xml
similarity index 100%
rename from bin/Debug/System.Runtime.CompilerServices.Unsafe.xml
rename to bin/Release/System.Runtime.CompilerServices.Unsafe.xml
diff --git a/bin/Debug/runtimes/win-arm/native/e_sqlite3.dll b/bin/Release/runtimes/win-arm/native/e_sqlite3.dll
similarity index 100%
rename from bin/Debug/runtimes/win-arm/native/e_sqlite3.dll
rename to bin/Release/runtimes/win-arm/native/e_sqlite3.dll
diff --git a/bin/Debug/runtimes/win-x64/native/e_sqlite3.dll b/bin/Release/runtimes/win-x64/native/e_sqlite3.dll
similarity index 100%
rename from bin/Debug/runtimes/win-x64/native/e_sqlite3.dll
rename to bin/Release/runtimes/win-x64/native/e_sqlite3.dll
diff --git a/bin/Debug/runtimes/win-x86/native/e_sqlite3.dll b/bin/Release/runtimes/win-x86/native/e_sqlite3.dll
similarity index 100%
rename from bin/Debug/runtimes/win-x86/native/e_sqlite3.dll
rename to bin/Release/runtimes/win-x86/native/e_sqlite3.dll
diff --git a/Книга1.xlsx b/Книга1.xlsx
new file mode 100644
index 0000000..01fd683
Binary files /dev/null and b/Книга1.xlsx differ