PageRenderTime 73ms CodeModel.GetById 36ms RepoModel.GetById 0ms app.codeStats 1ms

/AutoSzkola/AutoSzkola/DataManager/KursManager.cs

https://bitbucket.org/wawrzek/autoszkola
C# | 1445 lines | 1260 code | 157 blank | 28 comment | 419 complexity | 75f859f701dd6af039069451ea59a84e MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows.Forms;
  6. using System.Data.SQLite;
  7. namespace EE4IT.AutoSzkola
  8. {
  9. public class KursManager : DbManager
  10. {
  11. #region KURSY
  12. /// <summary>
  13. /// Funkcja pobiera listę obiektów typu Kurs
  14. /// </summary>
  15. /// <param name="typKursuId">ID typu kursu dla którego wyciągana jest lista ustawień godzinowo kosztowych </param>
  16. /// <param name="_c">Jeżeli ten parametr ma wartość NULL wtedy connection zostanie stworzone</param>
  17. /// <returns>listę obiektów typu KursTypData zawierającą ustawienia godzinowo kosztowe danego typu kurs</returns>
  18. public List<Kurs> GetKursyListByUserId(long kursantId, SQLiteConnection _c)
  19. {
  20. List<Kurs> list = new List<Kurs>();
  21. bool ownConnection = false;
  22. SQLiteConnection c;
  23. if (_c == null)
  24. {
  25. c = GetConnection();
  26. ownConnection = false;
  27. }
  28. else
  29. {
  30. c = _c;
  31. ownConnection = true;
  32. }
  33. try
  34. {
  35. if (c.State != System.Data.ConnectionState.Open)
  36. c.Open();
  37. SQLiteCommand command = c.CreateCommand();
  38. command.CommandText = @"select id,kursantId,typKursuId,dataDodania,uzytkownikDodajacy,cena
  39. , rata1data,rata2data,rata3data,rata4data
  40. , rata1wpowadzajacyId, rata2wpowadzajacyId,rata3wpowadzajacyId,rata4wpowadzajacyId
  41. , rata1kwota,rata2kwota,rata3kwota,rata4kwota
  42. , aktywny
  43. , rata1gotowka,rata2gotowka,rata3gotowka,rata4gotowka
  44. , instruktorId, nrZaswiadczenia
  45. , rata5data,rata6data,rata7data,rata8data,rata9data,rata10data
  46. , rata5wpowadzajacyId, rata6wpowadzajacyId,rata7wpowadzajacyId,rata8wpowadzajacyId,rata9wpowadzajacyId,rata10wpowadzajacyId
  47. , rata5kwota,rata6kwota,rata7kwota,rata8kwota,rata9kwota,rata10kwota
  48. , rata5gotowka,rata6gotowka,rata7gotowka,rata8gotowka,rata9gotowka,rata10gotowka
  49. , w1_data, w1_osoba, w2_data, w2_osoba, w3_data, w3_osoba
  50. from Kurs where kursantId = " + kursantId;
  51. KursantManager km = new KursantManager();
  52. UserManager u = new UserManager();
  53. SQLiteDataReader reader = command.ExecuteReader();
  54. while (reader.Read())
  55. {
  56. Kurs k = new Kurs();
  57. k.Id = reader.GetInt64(0);
  58. k.KursantId = reader.GetInt64(1);
  59. k.TypKursu = GetTypKursuById(reader.GetInt64(2),c);
  60. k.DataDodania = reader.IsDBNull(3) || reader.GetString(3) == "" ? DateTime.MaxValue : reader.GetDateTime(3);
  61. k.UzytkownikDodajacy = u.GetUserById(reader.GetInt64(4),c);
  62. k.Cena = reader.GetDouble(5);
  63. k.Rata1Data = reader.IsDBNull(6) || reader.GetString(6) == "" ? DateTime.MaxValue : reader.GetDateTime(6);
  64. k.Rata2Data = reader.IsDBNull(7) || reader.GetString(7) == "" ? DateTime.MaxValue : reader.GetDateTime(7);
  65. k.Rata3Data = reader.IsDBNull(8) || reader.GetString(8) == "" ? DateTime.MaxValue : reader.GetDateTime(8);
  66. k.Rata4Data = reader.IsDBNull(9) || reader.GetString(9) == "" ? DateTime.MaxValue : reader.GetDateTime(9);
  67. k.Rata1Wprowadzajacy = u.GetUserById(reader.IsDBNull(10) ? 0 : reader.GetInt64(10),c);
  68. k.Rata2Wprowadzajacy = u.GetUserById(reader.IsDBNull(11) ? 0 : reader.GetInt64(11), c);
  69. k.Rata3Wprowadzajacy = u.GetUserById(reader.IsDBNull(12) ? 0 : reader.GetInt64(12), c);
  70. k.Rata4Wprowadzajacy = u.GetUserById(reader.IsDBNull(13) ? 0 : reader.GetInt64(13), c);
  71. k.Rata1Kwota = reader.IsDBNull(14) ? 0 : reader.GetDouble(14);
  72. k.Rata2Kwota = reader.IsDBNull(15) ? 0 : reader.GetDouble(15);
  73. k.Rata3Kwota = reader.IsDBNull(16) ? 0 : reader.GetDouble(16);
  74. k.Rata4Kwota = reader.IsDBNull(17) ? 0 : reader.GetDouble(17);
  75. k.Aktywny = reader.GetBoolean(18);
  76. k.Rata1Gotowka = reader.GetBoolean(19);
  77. k.Rata2Gotowka = reader.GetBoolean(20);
  78. k.Rata3Gotowka = reader.GetBoolean(21);
  79. k.Rata4Gotowka = reader.GetBoolean(22);
  80. long instruktorId = reader.IsDBNull(23) ? 0 : reader.GetInt64(23);
  81. InstruktorManager im = new InstruktorManager();
  82. k.Instruktor = im.GetInstruktorById(instruktorId,c);
  83. k.NumerZaswiadczenia = reader.IsDBNull(24) ? "" : reader.GetString(24);
  84. int i = 25;
  85. k.Rata5Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  86. i++; k.Rata6Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  87. i++; k.Rata7Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  88. i++; k.Rata8Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  89. i++; k.Rata9Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  90. i++; k.Rata10Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  91. i++; k.Rata5Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  92. i++; k.Rata6Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  93. i++; k.Rata7Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  94. i++; k.Rata8Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  95. i++; k.Rata9Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  96. i++; k.Rata10Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  97. i++; k.Rata5Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  98. i++; k.Rata6Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  99. i++; k.Rata7Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  100. i++; k.Rata8Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  101. i++; k.Rata9Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  102. i++; k.Rata10Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  103. i++; k.Rata5Gotowka = reader.GetBoolean(i);
  104. i++; k.Rata6Gotowka = reader.GetBoolean(i);
  105. i++; k.Rata7Gotowka = reader.GetBoolean(i);
  106. i++; k.Rata8Gotowka = reader.GetBoolean(i);
  107. i++; k.Rata9Gotowka = reader.GetBoolean(i);
  108. i++; k.Rata10Gotowka = reader.GetBoolean(i);
  109. i++; k.Wydruk_1_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  110. i++; k.Wydruk_1_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  111. i++; k.Wydruk_2_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  112. i++; k.Wydruk_2_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  113. i++; k.Wydruk_3_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  114. i++; k.Wydruk_3_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  115. k.GodzinyTeorii = GetGodzinyForKurs(k, GodzinaTyp.TEORIA, false,c);
  116. k.GodzinyJazdy = GetGodzinyForKurs(k, GodzinaTyp.JAZDA, false,c);
  117. k.GodzinyDodatkowe = GetGodzinyForKurs(k, GodzinaTyp.DODATKOWA, false,c);
  118. k.GodzinyEgzaminJazda = GetGodzinyForKurs(k, GodzinaTyp.EJAZDA, false, c);
  119. k.GodzinyEgzaminTeoria = GetGodzinyForKurs(k, GodzinaTyp.ETEORIA, false, c);
  120. list.Add(k);
  121. }
  122. reader.Close();
  123. }
  124. catch (Exception e)
  125. {
  126. MessageBox.Show(e.Message);
  127. }
  128. finally
  129. {
  130. if (!ownConnection && c.State == System.Data.ConnectionState.Open)
  131. c.Close();
  132. }
  133. return list;
  134. }
  135. public bool UpdatePlatnosc(Kurs kurs, Double wplata, User user, DateTime data, bool IsGotowka, int rata)
  136. {
  137. List<Kurs> list = new List<Kurs>();
  138. bool ownConnection = false;
  139. SQLiteConnection c;
  140. c = GetConnection();
  141. String SQLset = String.Format(" rata{0}data = '{1}', rata{0}wpowadzajacyId = {2}, rata{0}kwota = {3}, rata{0}gotowka = {4} "
  142. , rata, data.ToString("yyyy-MM-dd HH:mm:ss"), user.Id, wplata, IsGotowka ? 1 : 0);
  143. bool ret = true;
  144. try
  145. {
  146. if (c.State != System.Data.ConnectionState.Open)
  147. c.Open();
  148. SQLiteCommand command = c.CreateCommand();
  149. command.CommandText = "Update Kurs set " + SQLset + " where id = " + kurs.Id;
  150. int i = command.ExecuteNonQuery();
  151. if (i == 1)
  152. {
  153. if (rata == 1)
  154. {
  155. kurs.Rata1Data = data;
  156. kurs.Rata1Kwota = wplata;
  157. kurs.Rata1Wprowadzajacy = user;
  158. kurs.Rata1Gotowka = IsGotowka;
  159. }
  160. else if (rata == 2)
  161. {
  162. kurs.Rata2Data = data;
  163. kurs.Rata2Kwota = wplata;
  164. kurs.Rata2Wprowadzajacy = user;
  165. kurs.Rata2Gotowka = IsGotowka;
  166. }
  167. else if (rata == 3)
  168. {
  169. kurs.Rata3Data = data;
  170. kurs.Rata3Kwota = wplata;
  171. kurs.Rata3Wprowadzajacy = user;
  172. kurs.Rata3Gotowka = IsGotowka;
  173. }
  174. else if (rata == 4)
  175. {
  176. kurs.Rata4Data = data;
  177. kurs.Rata4Kwota = wplata;
  178. kurs.Rata4Wprowadzajacy = user;
  179. kurs.Rata4Gotowka = IsGotowka;
  180. }
  181. else if (rata == 5)
  182. {
  183. kurs.Rata5Data = data;
  184. kurs.Rata5Kwota = wplata;
  185. kurs.Rata5Wprowadzajacy = user;
  186. kurs.Rata5Gotowka = IsGotowka;
  187. }
  188. else if (rata == 6)
  189. {
  190. kurs.Rata6Data = data;
  191. kurs.Rata6Kwota = wplata;
  192. kurs.Rata6Wprowadzajacy = user;
  193. kurs.Rata6Gotowka = IsGotowka;
  194. }
  195. else if (rata == 7)
  196. {
  197. kurs.Rata7Data = data;
  198. kurs.Rata7Kwota = wplata;
  199. kurs.Rata7Wprowadzajacy = user;
  200. kurs.Rata7Gotowka = IsGotowka;
  201. }
  202. else if (rata == 8)
  203. {
  204. kurs.Rata8Data = data;
  205. kurs.Rata8Kwota = wplata;
  206. kurs.Rata8Wprowadzajacy = user;
  207. kurs.Rata8Gotowka = IsGotowka;
  208. }
  209. else if (rata == 9)
  210. {
  211. kurs.Rata9Data = data;
  212. kurs.Rata9Kwota = wplata;
  213. kurs.Rata9Wprowadzajacy = user;
  214. kurs.Rata9Gotowka = IsGotowka;
  215. }
  216. else if (rata == 10)
  217. {
  218. kurs.Rata10Data = data;
  219. kurs.Rata10Kwota = wplata;
  220. kurs.Rata10Wprowadzajacy = user;
  221. kurs.Rata10Gotowka = IsGotowka;
  222. }
  223. else
  224. ret = false;
  225. }
  226. else
  227. ret = false;
  228. }
  229. catch (Exception e)
  230. {
  231. MessageBox.Show(e.Message);
  232. ret = false;
  233. }
  234. finally
  235. {
  236. if (!ownConnection && c.State == System.Data.ConnectionState.Open)
  237. c.Close();
  238. }
  239. return ret;
  240. }
  241. public bool SaveKurs(Kurs kurs)
  242. {
  243. SQLiteConnection c = GetConnection();
  244. bool ret = true;
  245. try
  246. {
  247. if (c.State != System.Data.ConnectionState.Open)
  248. c.Open();
  249. SQLiteCommand command = c.CreateCommand();
  250. command.CommandText = String.Format("insert into Kurs(kursantId,typKursuId,dataDodania,uzytkownikDodajacy,cena,instruktorId, nrZaswiadczenia) values ({0},{1},'{2}',{3},{4},{5},'{6}')"
  251. , kurs.KursantId, kurs.TypKursu.ID,kurs.DataDodania.ToString("yyyy-MM-dd"),kurs.UzytkownikDodajacy.Id,kurs.Cena
  252. , kurs.Instruktor == null ? 0 : kurs.Instruktor.Id, kurs.NumerZaswiadczenia);
  253. int i = command.ExecuteNonQuery();
  254. if (i != 1)
  255. {
  256. ret = false;
  257. throw new Exception("Błąd przy wstawianiu danych kursanta!");
  258. }
  259. else
  260. {
  261. command.CommandText = "SELECT last_insert_rowid();";
  262. kurs.Id = Convert.ToInt32(command.ExecuteScalar());
  263. }
  264. }
  265. catch (Exception e)
  266. {
  267. ret = false;
  268. MessageBox.Show(e.Message);
  269. }
  270. finally
  271. {
  272. if (c.State == System.Data.ConnectionState.Open)
  273. c.Close();
  274. }
  275. return ret;
  276. }
  277. public bool DeleteKurs(Kurs kurs)
  278. {
  279. SQLiteConnection c = GetConnection();
  280. bool ret = true;
  281. try
  282. {
  283. if (c.State != System.Data.ConnectionState.Open)
  284. c.Open();
  285. SQLiteCommand command = c.CreateCommand();
  286. command.CommandText = "delete from KursGodzina where kursId = " + kurs.Id;
  287. command.ExecuteNonQuery();
  288. command.CommandText = "delete from Kurs where Id = " + kurs.Id;
  289. command.ExecuteNonQuery();
  290. }
  291. catch (Exception e)
  292. {
  293. ret = false;
  294. MessageBox.Show(e.Message);
  295. }
  296. finally
  297. {
  298. if (c.State == System.Data.ConnectionState.Open)
  299. c.Close();
  300. }
  301. return ret;
  302. }
  303. public bool UpdateKurs(Kurs kurs, KursTyp kt, bool aktywny, Double cena, Double? rata1, Double? rata2, Double? rata3, Double? rata4, Double? rata5, Double? rata6, Double? rata7, Double? rata8, Double? rata9, Double? rata10
  304. , bool? rata1gotowka, bool? rata2gotowka, bool? rata3gotowka, bool? rata4gotowka, bool? rata5gotowka, bool? rata6gotowka, bool? rata7gotowka, bool? rata8gotowka, bool? rata9gotowka, bool? rata10gotowka
  305. , String nrZaswiadczenia, Instruktor instruktor)
  306. {
  307. List<Kurs> list = new List<Kurs>();
  308. SQLiteConnection c = GetConnection();
  309. bool ret = true;
  310. try
  311. {
  312. if (c.State != System.Data.ConnectionState.Open)
  313. c.Open();
  314. SQLiteCommand command = c.CreateCommand();
  315. StringBuilder sb = new StringBuilder();
  316. sb.Append("update Kurs set typKursuId = " + kt.ID+", cena = "+cena );
  317. if (aktywny)
  318. sb.Append(", aktywny = 1");
  319. else
  320. sb.Append(", aktywny = 0");
  321. if(rata1 != null)
  322. sb.Append(" ,rata1kwota = " + rata1);
  323. if (rata1gotowka != null)
  324. sb.Append(" ,rata1gotowka = " + (rata1gotowka.Value ? "1" : "0"));
  325. if (rata2 != null)
  326. sb.Append(" ,rata2kwota = " + rata2);
  327. if (rata2gotowka != null)
  328. sb.Append(" ,rata2gotowka = " + (rata2gotowka.Value ? "1" : "0"));
  329. if (rata3 != null)
  330. sb.Append(" ,rata3kwota = " + rata3);
  331. if (rata3gotowka != null)
  332. sb.Append(" ,rata3gotowka = " + (rata3gotowka.Value ? "1" : "0"));
  333. if (rata4 != null)
  334. sb.Append(" ,rata4kwota = " + rata4);
  335. if (rata4gotowka != null)
  336. sb.Append(" ,rata4gotowka = " + (rata4gotowka.Value ? "1" : "0"));
  337. if (rata5 != null)
  338. sb.Append(" ,rata5kwota = " + rata5);
  339. if (rata5gotowka != null)
  340. sb.Append(" ,rata5gotowka = " + (rata5gotowka.Value ? "1" : "0"));
  341. if (rata6 != null)
  342. sb.Append(" ,rata6kwota = " + rata6);
  343. if (rata6gotowka != null)
  344. sb.Append(" ,rata6gotowka = " + (rata6gotowka.Value ? "1" : "0"));
  345. if (rata7 != null)
  346. sb.Append(" ,rata7kwota = " + rata7);
  347. if (rata7gotowka != null)
  348. sb.Append(" ,rata7gotowka = " + (rata7gotowka.Value ? "1" : "0"));
  349. if (rata8 != null)
  350. sb.Append(" ,rata8kwota = " + rata8);
  351. if (rata8gotowka != null)
  352. sb.Append(" ,rata8gotowka = " + (rata8gotowka.Value ? "1" : "0"));
  353. if (rata9 != null)
  354. sb.Append(" ,rata9kwota = " + rata9);
  355. if (rata9gotowka != null)
  356. sb.Append(" ,rata9gotowka = " + (rata9gotowka.Value ? "1" : "0"));
  357. if (rata10 != null)
  358. sb.Append(" ,rata10kwota = " + rata10);
  359. if (rata10gotowka != null)
  360. sb.Append(" ,rata10gotowka = " + (rata10gotowka.Value ? "1" : "0"));
  361. if (!String.IsNullOrEmpty(nrZaswiadczenia))
  362. sb.Append(" ,nrZaswiadczenia = '" + nrZaswiadczenia + "'");
  363. if (instruktor != null)
  364. sb.Append(" ,instruktorId = " + instruktor.Id);
  365. sb.Append(" where id = " + kurs.Id);
  366. command.CommandText = sb.ToString();
  367. int i = command.ExecuteNonQuery();
  368. if (i != 1)
  369. {
  370. ret = false;
  371. throw new Exception("Błąd przy wstawianiu danych kursanta!");
  372. }
  373. else
  374. {
  375. kurs.TypKursu = kt;
  376. kurs.Cena = cena;
  377. kurs.Aktywny = aktywny;
  378. if (rata1 != null)
  379. kurs.Rata1Kwota = (double)rata1;
  380. if (rata2 != null)
  381. kurs.Rata2Kwota = (double)rata2;
  382. if (rata3 != null)
  383. kurs.Rata3Kwota = (double)rata3;
  384. if (rata4 != null)
  385. kurs.Rata4Kwota = (double)rata4;
  386. if (rata5 != null)
  387. kurs.Rata5Kwota = (double)rata5;
  388. if (rata6 != null)
  389. kurs.Rata6Kwota = (double)rata6;
  390. if (rata7 != null)
  391. kurs.Rata7Kwota = (double)rata7;
  392. if (rata8 != null)
  393. kurs.Rata8Kwota = (double)rata8;
  394. if (rata1gotowka != null)
  395. kurs.Rata1Gotowka = rata1gotowka.Value;
  396. if (rata2gotowka != null)
  397. kurs.Rata2Gotowka = rata2gotowka.Value;
  398. if (rata3gotowka != null)
  399. kurs.Rata3Gotowka = rata3gotowka.Value;
  400. if (rata4gotowka != null)
  401. kurs.Rata4Gotowka = rata4gotowka.Value;
  402. if (rata5gotowka != null)
  403. kurs.Rata5Gotowka = rata5gotowka.Value;
  404. if (rata6gotowka != null)
  405. kurs.Rata6Gotowka = rata6gotowka.Value;
  406. if (rata7gotowka != null)
  407. kurs.Rata7Gotowka = rata7gotowka.Value;
  408. if (rata8gotowka != null)
  409. kurs.Rata8Gotowka = rata8gotowka.Value;
  410. if (rata9gotowka != null)
  411. kurs.Rata9Gotowka = rata9gotowka.Value;
  412. if (rata10gotowka != null)
  413. kurs.Rata10Gotowka = rata10gotowka.Value;
  414. if (!String.IsNullOrEmpty(nrZaswiadczenia))
  415. kurs.NumerZaswiadczenia = nrZaswiadczenia;
  416. if (instruktor != null)
  417. kurs.Instruktor = instruktor;
  418. }
  419. }
  420. catch (Exception e)
  421. {
  422. ret = false;
  423. MessageBox.Show(e.Message);
  424. }
  425. finally
  426. {
  427. if (c.State == System.Data.ConnectionState.Open)
  428. c.Close();
  429. }
  430. return ret;
  431. }
  432. public Kurs GetKursById(long kursId, SQLiteConnection _c)
  433. {
  434. Kurs k = new Kurs();
  435. bool ownConnection = false;
  436. SQLiteConnection c;
  437. if (_c == null)
  438. {
  439. c = GetConnection();
  440. ownConnection = false;
  441. }
  442. else
  443. {
  444. c = _c;
  445. ownConnection = true;
  446. }
  447. try
  448. {
  449. if (c.State != System.Data.ConnectionState.Open)
  450. c.Open();
  451. SQLiteCommand command = c.CreateCommand();
  452. command.CommandText = @"select id,kursantId,typKursuId,dataDodania,uzytkownikDodajacy,cena
  453. , rata1data,rata2data,rata3data,rata4data
  454. , rata1wpowadzajacyId, rata2wpowadzajacyId,rata3wpowadzajacyId,rata4wpowadzajacyId
  455. , rata1kwota,rata2kwota,rata3kwota,rata4kwota
  456. , aktywny
  457. , rata1gotowka,rata2gotowka,rata3gotowka,rata4gotowka
  458. , instruktorId, nrZaswiadczenia
  459. , rata5data,rata6data,rata7data,rata8data,rata9data,rata10data
  460. , rata5wpowadzajacyId, rata6wpowadzajacyId,rata7wpowadzajacyId,rata8wpowadzajacyId,rata9wpowadzajacyId,rata10wpowadzajacyId
  461. , rata5kwota,rata6kwota,rata7kwota,rata8kwota,rata9kwota,rata10kwota
  462. , rata5gotowka,rata6gotowka,rata7gotowka,rata8gotowka,rata9gotowka,rata10gotowka
  463. , w1_data, w1_osoba, w2_data, w2_osoba, w3_data, w3_osoba
  464. from Kurs where id = " + kursId;
  465. KursantManager km = new KursantManager();
  466. UserManager u = new UserManager();
  467. SQLiteDataReader reader = command.ExecuteReader();
  468. while (reader.Read())
  469. {
  470. k.Id = reader.GetInt64(0);
  471. k.KursantId = reader.GetInt64(1);
  472. k.TypKursu = GetTypKursuById(reader.GetInt64(2),c);
  473. k.DataDodania = reader.IsDBNull(3) || reader.GetString(3) == "" ? DateTime.MaxValue : reader.GetDateTime(3);
  474. k.UzytkownikDodajacy = u.GetUserById(reader.GetInt64(4),c);
  475. k.Cena = reader.GetDouble(5);
  476. k.Rata1Data = reader.IsDBNull(6) || reader.GetString(6) == "" ? DateTime.MaxValue : reader.GetDateTime(6);
  477. k.Rata2Data = reader.IsDBNull(7) || reader.GetString(7) == "" ? DateTime.MaxValue : reader.GetDateTime(7);
  478. k.Rata3Data = reader.IsDBNull(8) || reader.GetString(8) == "" ? DateTime.MaxValue : reader.GetDateTime(8);
  479. k.Rata4Data = reader.IsDBNull(9) || reader.GetString(9) == "" ? DateTime.MaxValue : reader.GetDateTime(9);
  480. k.Rata1Wprowadzajacy = u.GetUserById(reader.IsDBNull(10) ? 0 : reader.GetInt64(10),c);
  481. k.Rata2Wprowadzajacy = u.GetUserById(reader.IsDBNull(11) ? 0 : reader.GetInt64(11), c);
  482. k.Rata3Wprowadzajacy = u.GetUserById(reader.IsDBNull(12) ? 0 : reader.GetInt64(12), c);
  483. k.Rata4Wprowadzajacy = u.GetUserById(reader.IsDBNull(13) ? 0 : reader.GetInt64(13), c);
  484. k.Rata1Kwota = reader.IsDBNull(14) ? 0 : reader.GetDouble(14);
  485. k.Rata2Kwota = reader.IsDBNull(15) ? 0 : reader.GetDouble(15);
  486. k.Rata3Kwota = reader.IsDBNull(16) ? 0 : reader.GetDouble(16);
  487. k.Rata4Kwota = reader.IsDBNull(17) ? 0 : reader.GetDouble(17);
  488. k.Aktywny = reader.GetBoolean(18);
  489. k.Rata1Gotowka = reader.GetBoolean(19);
  490. k.Rata2Gotowka = reader.GetBoolean(20);
  491. k.Rata3Gotowka = reader.GetBoolean(21);
  492. k.Rata4Gotowka = reader.GetBoolean(22);
  493. long instruktorId = reader.IsDBNull(23) ? 0 : reader.GetInt64(23);
  494. InstruktorManager im = new InstruktorManager();
  495. k.Instruktor = im.GetInstruktorById(instruktorId,c);
  496. k.NumerZaswiadczenia = reader.IsDBNull(24) ? "" : reader.GetString(24);
  497. int i = 25;
  498. k.Rata5Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  499. i++; k.Rata6Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  500. i++; k.Rata7Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  501. i++; k.Rata8Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  502. i++; k.Rata9Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  503. i++; k.Rata10Data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  504. i++; k.Rata5Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  505. i++; k.Rata6Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  506. i++; k.Rata7Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  507. i++; k.Rata8Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  508. i++; k.Rata9Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  509. i++; k.Rata10Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  510. i++; k.Rata5Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  511. i++; k.Rata6Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  512. i++; k.Rata7Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  513. i++; k.Rata8Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  514. i++; k.Rata9Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  515. i++; k.Rata10Kwota = reader.IsDBNull(i) ? 0 : reader.GetDouble(i);
  516. i++; k.Rata5Gotowka = reader.GetBoolean(i);
  517. i++; k.Rata6Gotowka = reader.GetBoolean(i);
  518. i++; k.Rata7Gotowka = reader.GetBoolean(i);
  519. i++; k.Rata8Gotowka = reader.GetBoolean(i);
  520. i++; k.Rata9Gotowka = reader.GetBoolean(i);
  521. i++; k.Rata10Gotowka = reader.GetBoolean(i);
  522. i++; k.Wydruk_1_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  523. i++; k.Wydruk_1_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  524. i++; k.Wydruk_2_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  525. i++; k.Wydruk_2_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  526. i++; k.Wydruk_3_data = reader.IsDBNull(i) || reader.GetString(i) == "" ? DateTime.MaxValue : reader.GetDateTime(i);
  527. i++; k.Wydruk_3_Wprowadzajacy = u.GetUserById(reader.IsDBNull(i) ? 0 : reader.GetInt64(i), c);
  528. k.GodzinyTeorii = GetGodzinyForKurs(k, GodzinaTyp.TEORIA, false, c);
  529. k.GodzinyJazdy = GetGodzinyForKurs(k, GodzinaTyp.JAZDA, false, c);
  530. k.GodzinyDodatkowe = GetGodzinyForKurs(k, GodzinaTyp.DODATKOWA, false, c);
  531. k.GodzinyEgzaminJazda = GetGodzinyForKurs(k, GodzinaTyp.EJAZDA, false, c);
  532. k.GodzinyEgzaminTeoria = GetGodzinyForKurs(k, GodzinaTyp.ETEORIA, false, c);
  533. }
  534. reader.Close();
  535. }
  536. catch (Exception e)
  537. {
  538. MessageBox.Show(e.Message);
  539. }
  540. finally
  541. {
  542. if (!ownConnection && c.State == System.Data.ConnectionState.Open)
  543. c.Close();
  544. }
  545. return k;
  546. }
  547. public DateTime GetMaxRataDate()
  548. {
  549. DateTime dt = DateTime.MinValue;
  550. SQLiteConnection c = GetConnection();
  551. try
  552. {
  553. if (c.State != System.Data.ConnectionState.Open)
  554. c.Open();
  555. SQLiteCommand command = c.CreateCommand();
  556. command.CommandText = "SELECT max(rata1data), max(rata2data), max(rata3data), max(rata4data), max(rata5data), max(rata6data), max(rata7data), max(rata8data), max(rata9data), max(rata10data) FROM Kurs";
  557. SQLiteDataReader reader = command.ExecuteReader();
  558. if (reader.Read())
  559. {
  560. DateTime dt1 = reader.IsDBNull(0) ? DateTime.MinValue : new DateTime(reader.GetDateTime(0).Year, reader.GetDateTime(0).Month, reader.GetDateTime(0).Day);
  561. DateTime dt2 = reader.IsDBNull(1) ? DateTime.MinValue : new DateTime(reader.GetDateTime(1).Year, reader.GetDateTime(1).Month, reader.GetDateTime(1).Day);
  562. DateTime dt3 = reader.IsDBNull(2) ? DateTime.MinValue : new DateTime(reader.GetDateTime(2).Year, reader.GetDateTime(2).Month, reader.GetDateTime(2).Day);
  563. DateTime dt4 = reader.IsDBNull(3) ? DateTime.MinValue : new DateTime(reader.GetDateTime(3).Year, reader.GetDateTime(3).Month, reader.GetDateTime(3).Day);
  564. DateTime dt5 = reader.IsDBNull(4) ? DateTime.MinValue : new DateTime(reader.GetDateTime(4).Year, reader.GetDateTime(4).Month, reader.GetDateTime(4).Day);
  565. DateTime dt6 = reader.IsDBNull(5) ? DateTime.MinValue : new DateTime(reader.GetDateTime(5).Year, reader.GetDateTime(5).Month, reader.GetDateTime(5).Day);
  566. DateTime dt7 = reader.IsDBNull(6) ? DateTime.MinValue : new DateTime(reader.GetDateTime(6).Year, reader.GetDateTime(6).Month, reader.GetDateTime(6).Day);
  567. DateTime dt8 = reader.IsDBNull(7) ? DateTime.MinValue : new DateTime(reader.GetDateTime(7).Year, reader.GetDateTime(7).Month, reader.GetDateTime(7).Day);
  568. DateTime dt9 = reader.IsDBNull(8) ? DateTime.MinValue : new DateTime(reader.GetDateTime(8).Year, reader.GetDateTime(8).Month, reader.GetDateTime(8).Day);
  569. DateTime dt10 = reader.IsDBNull(9) ? DateTime.MinValue : new DateTime(reader.GetDateTime(9).Year, reader.GetDateTime(9).Month, reader.GetDateTime(9).Day);
  570. if (dt < dt1) dt = dt1;
  571. if (dt < dt2) dt = dt2;
  572. if (dt < dt3) dt = dt3;
  573. if (dt < dt4) dt = dt4;
  574. if (dt < dt5) dt = dt5;
  575. if (dt < dt6) dt = dt6;
  576. if (dt < dt7) dt = dt7;
  577. if (dt < dt8) dt = dt8;
  578. if (dt < dt9) dt = dt9;
  579. if (dt < dt10) dt = dt10;
  580. }
  581. reader.Close();
  582. }
  583. catch (Exception e)
  584. {
  585. MessageBox.Show(e.Message);
  586. }
  587. finally
  588. {
  589. if (c.State == System.Data.ConnectionState.Open)
  590. c.Close();
  591. }
  592. return dt;
  593. }
  594. #endregion
  595. #region TYPY KURSOW
  596. /// <summary>
  597. /// Funkcja pobiera listę obiektów typu KursTypData zawierającą ustawienia godzinowo kosztowe danego typu kursu
  598. /// </summary>
  599. /// <param name="typKursuId">ID typu kursu dla którego wyciągana jest lista ustawień godzinowo kosztowych </param>
  600. /// <param name="_c">Jeżeli ten parametr ma wartość NULL wtedy connection zostanie stworzone</param>
  601. /// <returns>listę obiektów typu KursTypData zawierającą ustawienia godzinowo kosztowe danego typu kurs</returns>
  602. public List<KursTypData> GetTypKursuDataList(long typKursuId, SQLiteConnection _c)
  603. {
  604. List<KursTypData> list = new List<KursTypData>();
  605. bool ownConnection = false;
  606. SQLiteConnection c;
  607. if (_c == null)
  608. {
  609. c = GetConnection();
  610. ownConnection = false;
  611. }
  612. else
  613. {
  614. c = _c;
  615. ownConnection = true;
  616. }
  617. try
  618. {
  619. if (c.State != System.Data.ConnectionState.Open)
  620. c.Open();
  621. SQLiteCommand command = c.CreateCommand();
  622. command.CommandText = @"select id, courseTypeId,dateFrom,dateTo,noHoursDrive,priceDrive,paymentDrive,noHoursTheory,priceTheory,paymentTheory
  623. ,priceAdditional,paymentAdditional, priceEgzDrive, paymentEgzDrive, priceEgzTheory, paymentEgzTheory, noHoursAdditional
  624. , noHoursEgzTheory, noHoursEgzDrive
  625. from TypKursuDane where courseTypeId = " + typKursuId + " order by dateFrom desc";
  626. SQLiteDataReader reader = command.ExecuteReader();
  627. while (reader.Read())
  628. {
  629. KursTypData ktd = new KursTypData();
  630. ktd.Id = reader.GetInt64(0);
  631. ktd.KursTypId = reader.GetInt64(1);
  632. ktd.DateFrom = reader.GetDateTime(2);
  633. ktd.DateTo = reader.IsDBNull(3) || reader.GetString(3) == "" ? DateTime.MaxValue : reader.GetDateTime(3);
  634. ktd.NoDriveHours = reader.GetInt32(4);
  635. ktd.PriceDriveHours = reader.GetFloat(5);
  636. ktd.PaymentDriveHours = reader.GetFloat(6);
  637. ktd.NoTheoryHours = reader.GetInt32(7);
  638. ktd.PriceTheoryHours = reader.GetFloat(8);
  639. ktd.PaymentTheoryHours = reader.GetFloat(9);
  640. ktd.PriceAdditionalHours = reader.GetFloat(10);
  641. ktd.PaymentAdditionalHours = reader.GetFloat(11);
  642. ktd.PriceEgzDriveHours = reader.GetFloat(12);
  643. ktd.PaymentEgzDriveHours = reader.GetFloat(13);
  644. ktd.PriceEgzTheoryHours = reader.GetFloat(14);
  645. ktd.PaymentEgzTheoryHours = reader.GetFloat(15);
  646. ktd.NoAdditionalHours = reader.GetInt32(16);
  647. ktd.NoEgTheoryHours = reader.GetInt32(17);
  648. ktd.NoEgDriveHours = reader.GetInt32(18);
  649. list.Add(ktd);
  650. }
  651. reader.Close();
  652. }
  653. catch (Exception e)
  654. {
  655. MessageBox.Show(e.Message);
  656. }
  657. finally
  658. {
  659. if (!ownConnection && c.State == System.Data.ConnectionState.Open)
  660. c.Close();
  661. }
  662. return list;
  663. }
  664. /// <summary>
  665. /// Funkcja pobiera listę obiektów typu KursTypData zawierającą ustawienia godzinowo kosztowe danego typu kursu
  666. /// </summary>
  667. /// <param name="typKursuId">ID typu kursu dla którego wyciągana jest lista ustawień godzinowo kosztowych </param>
  668. /// <param name="_c">Jeżeli ten parametr ma wartość NULL wtedy connection zostanie stworzone</param>
  669. /// <returns>listę obiektów typu KursTypData zawierającą ustawienia godzinowo kosztowe danego typu kurs</returns>
  670. public KursTyp GetTypKursuById(long typKursuId, SQLiteConnection _c )
  671. {
  672. KursTyp kt = new KursTyp();
  673. bool ownConnection = false;
  674. SQLiteConnection c;
  675. if (_c == null)
  676. {
  677. c = GetConnection();
  678. ownConnection = false;
  679. }
  680. else
  681. {
  682. c = _c;
  683. ownConnection = true;
  684. }
  685. try
  686. {
  687. if (c.State != System.Data.ConnectionState.Open)
  688. c.Open();
  689. SQLiteCommand command = c.CreateCommand();
  690. command.CommandText = String.Format("SELECT id, name, isActive, description, IsRemainder FROM TypyKursow where id = {0}", typKursuId);
  691. SQLiteDataReader reader = command.ExecuteReader();
  692. if (reader.Read())
  693. {
  694. kt.ID = reader.GetInt64(0);
  695. kt.Name = reader.GetString(1);
  696. kt.IsActive = reader.GetBoolean(2);
  697. kt.Description = reader.IsDBNull(3) ? "" : reader.GetString(3);
  698. kt.IsRemainder = reader.GetBoolean(4);
  699. kt.DataList = GetTypKursuDataList(kt.ID, c);
  700. }
  701. reader.Close();
  702. }
  703. catch (Exception e)
  704. {
  705. MessageBox.Show(e.Message);
  706. }
  707. finally
  708. {
  709. if (!ownConnection && c.State == System.Data.ConnectionState.Open)
  710. c.Close();
  711. }
  712. return kt;
  713. }
  714. public bool UpdateTypKursuData(KursTypData ktd, DateTime DateFrom, DateTime DateTo, int NoDriveHours, float PriceDriveHours, float PaymentDriveHours, int NoTheoryHours
  715. ,float PriceTheoryHours,float PaymentTheoryHours, float PriceAdditionalHours, float PaymentAdditionalHours, float PriceEgzDrive, float PaymentEgzDrive
  716. , float PriceEgzTheory, float PaymentEgzTheory, int NoAdditionalHours, int NoEgTheoryHours, int NoEgDriveHours)
  717. {
  718. bool ret = true;
  719. SQLiteConnection c = GetConnection();
  720. try
  721. {
  722. if (c.State != System.Data.ConnectionState.Open)
  723. c.Open();
  724. SQLiteCommand command = c.CreateCommand();
  725. //SELECT id, name, isActive FROM
  726. command.CommandText = String.Format("update TypKursuDane set dateFrom = '{0}', dateTo = '{1}', noHoursDrive = {2}, priceDrive = {3}, paymentDrive = {4} " +
  727. ", noHoursTheory = {5}, priceTheory = {6}, paymentTheory = {7}, priceAdditional = {8}, paymentAdditional = {9} " +
  728. ", priceEgzDrive = {11}, paymentEgzDrive = {12}, priceEgzTheory = {13}, paymentEgzTheory = {14} " +
  729. ", noHoursAdditional = {15}, noHoursEgzTheory = {16}, noHoursEgzDrive = {17} " +
  730. " where id = {10}", DateFrom.ToString("yyyy-MM-dd 00:00"), DateTo == DateTimePicker.MaximumDateTime ? "" : DateTo.ToString("yyyy-MM-dd 00:00"), NoDriveHours
  731. , PriceDriveHours, PaymentDriveHours, NoTheoryHours, PriceTheoryHours, PaymentTheoryHours, PriceAdditionalHours, PaymentAdditionalHours
  732. , ktd.Id, PriceEgzDrive, PaymentEgzDrive, PriceEgzTheory, PaymentEgzTheory,NoAdditionalHours, NoEgTheoryHours, NoEgDriveHours);
  733. int i = command.ExecuteNonQuery();
  734. if (i != 1)
  735. {
  736. throw new Exception("Błąd przy aktualizacji danych szczegółowych typu kursu!");
  737. }
  738. else
  739. {
  740. ktd.DateFrom = DateFrom;
  741. ktd.DateTo = DateTo == DateTimePicker.MaximumDateTime ? DateTime.MaxValue : DateTo;
  742. ktd.NoDriveHours = NoDriveHours;
  743. ktd.PriceDriveHours = PriceDriveHours;
  744. ktd.PaymentDriveHours = PaymentDriveHours;
  745. ktd.NoTheoryHours = NoTheoryHours;
  746. ktd.PriceTheoryHours = PriceTheoryHours;
  747. ktd.PaymentTheoryHours = PaymentTheoryHours;
  748. ktd.PriceAdditionalHours = PriceAdditionalHours;
  749. ktd.PaymentAdditionalHours = PaymentAdditionalHours;
  750. ktd.NoEgTheoryHours = NoAdditionalHours;
  751. ktd.NoEgTheoryHours = NoEgTheoryHours;
  752. ktd.NoEgDriveHours = NoEgDriveHours;
  753. }
  754. }
  755. catch (Exception e)
  756. {
  757. MessageBox.Show(e.Message);
  758. ret = false;
  759. }
  760. finally
  761. {
  762. if (c.State == System.Data.ConnectionState.Open)
  763. c.Close();
  764. }
  765. return ret;
  766. }
  767. public bool SaveTypKursuData(KursTypData ktd)
  768. {
  769. bool ret = true;
  770. SQLiteConnection c = GetConnection();
  771. try
  772. {
  773. if (c.State != System.Data.ConnectionState.Open)
  774. c.Open();
  775. using (SQLiteTransaction dbTrans = c.BeginTransaction())
  776. {
  777. SQLiteCommand command = c.CreateCommand();
  778. //najpierw update wpisu z nieustawiona data do
  779. command.CommandText = String.Format("update TypKursuDane set dateTo = date('{0}','-1 day') where courseTypeId = {1} and (dateTo is null or dateTo = '')", ktd.DateFrom, ktd.KursTypId);
  780. command.ExecuteNonQuery();
  781. //teraz insert
  782. command.CommandText = String.Format("insert into TypKursuDane(courseTypeId, dateFrom, dateTo, noHoursDrive, priceDrive, paymentDrive, noHoursTheory, priceTheory " +
  783. " , paymentTheory, priceAdditional, paymentAdditional, priceEgzDrive, paymentEgzDrive, priceEgzTheory, paymentEgzTheory, noHoursAdditional " +
  784. " , noHoursEgzTheory, noHoursEgzDrive) " +
  785. " values ({0},'{1}','{2}',{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17})", ktd.KursTypId, ktd.DateFrom.ToString("yyyy-MM-dd 00:00")
  786. , ktd.DateTo == DateTime.MaxValue ? "" : ktd.DateTo.ToString("yyyy-MM-dd 00:00"), ktd.NoDriveHours, ktd.PriceDriveHours, ktd.PaymentDriveHours
  787. , ktd.NoTheoryHours, ktd.PriceTheoryHours, ktd.PaymentTheoryHours, ktd.PriceAdditionalHours, ktd.PaymentAdditionalHours
  788. , ktd.PriceEgzDriveHours, ktd.PaymentEgzDriveHours, ktd.PriceEgzTheoryHours, ktd.PaymentEgzTheoryHours, ktd.NoAdditionalHours
  789. , ktd.NoEgTheoryHours, ktd.NoEgDriveHours);
  790. int i = command.ExecuteNonQuery();
  791. if (i != 1)
  792. {
  793. throw new Exception("Błąd przy zapisie danych szczegółowych typu kursu!");
  794. }
  795. dbTrans.Commit();
  796. }
  797. }
  798. catch (Exception e)
  799. {
  800. MessageBox.Show(e.Message);
  801. ret = false;
  802. }
  803. finally
  804. {
  805. if (c.State == System.Data.ConnectionState.Open)
  806. c.Close();
  807. }
  808. return ret;
  809. }
  810. public List<KursTyp> GetTypyKursow()
  811. {
  812. List<KursTyp> list = new List<KursTyp>();
  813. SQLiteConnection c = GetConnection();
  814. try
  815. {
  816. if (c.State != System.Data.ConnectionState.Open)
  817. c.Open();
  818. SQLiteCommand command = c.CreateCommand();
  819. command.CommandText = "SELECT id, name, isActive,description,IsRemainder FROM TypyKursow order by name;";
  820. SQLiteDataReader reader = command.ExecuteReader();
  821. while (reader.Read())
  822. {
  823. KursTyp kt = new KursTyp();
  824. kt.ID = reader.GetInt64(0);
  825. kt.Name = reader.GetString(1);
  826. kt.IsActive = reader.GetBoolean(2);
  827. kt.Description = reader.IsDBNull(3) ? "" : reader.GetString(3);
  828. kt.IsRemainder = reader.GetBoolean(4);
  829. kt.DataList = GetTypKursuDataList(kt.ID,c);
  830. list.Add(kt);
  831. }
  832. reader.Close();
  833. }
  834. catch (Exception e)
  835. {
  836. MessageBox.Show(e.Message);
  837. }
  838. finally
  839. {
  840. if (c.State == System.Data.ConnectionState.Open)
  841. c.Close();
  842. }
  843. return list;
  844. }
  845. public bool UpdateTypKursu(KursTyp kt, String name, bool isActive, String description, bool isRemainder)
  846. {
  847. bool ret = true;
  848. SQLiteConnection c = GetConnection();
  849. try
  850. {
  851. if (c.State != System.Data.ConnectionState.Open)
  852. c.Open();
  853. SQLiteCommand command = c.CreateCommand();
  854. //SELECT id, name, isActive FROM
  855. command.CommandText = String.Format("update TypyKursow set name = '{0}', isActive = {1}, description = '{3}', IsRemainder = {4} where id = {2}", name, isActive == false ? 0 : 1, kt.ID, description, isRemainder == false ? 0 : 1);
  856. int i = command.ExecuteNonQuery();
  857. if (i != 1)
  858. {
  859. throw new Exception("Błąd przy aktualizacji danych typu kursu!");
  860. }
  861. else
  862. {
  863. kt.Name = name;
  864. kt.IsActive = isActive;
  865. kt.Description = description;
  866. kt.IsRemainder = isRemainder;
  867. }
  868. }
  869. catch (Exception e)
  870. {
  871. MessageBox.Show(e.Message);
  872. ret = false;
  873. }
  874. finally
  875. {
  876. if (c.State == System.Data.ConnectionState.Open)
  877. c.Close();
  878. }
  879. return ret;
  880. }
  881. public bool IsSendReminderDone(int NoOfPayment, Kurs kurs)
  882. {
  883. bool ret = true;
  884. SQLiteConnection c = GetConnection();
  885. try
  886. {
  887. if (c.State != System.Data.ConnectionState.Open)
  888. c.Open();
  889. SQLiteCommand command = c.CreateCommand();
  890. String fieldName = String.Format("w{0}_data",NoOfPayment);
  891. command.CommandText = String.Format("SELECT " + fieldName + " FROM Kurs WHERE id = {0}", kurs.Id);
  892. SQLiteDataReader reader = command.ExecuteReader();
  893. if (reader.Read())
  894. {
  895. if (reader.IsDBNull(0) || reader.GetString(0) == "")
  896. ret = false;
  897. }
  898. }
  899. catch (Exception e)
  900. {
  901. MessageBox.Show(e.Message);
  902. ret = false;
  903. }
  904. finally
  905. {
  906. if (c.State == System.Data.ConnectionState.Open)
  907. c.Close();
  908. }
  909. return ret;
  910. }
  911. public bool UpdateSendReminder(Kurs kurs, int NoOfPayment, DateTime date, User user)
  912. {
  913. bool ret = true;
  914. SQLiteConnection c = GetConnection();
  915. try
  916. {
  917. if (c.State != System.Data.ConnectionState.Open)
  918. c.Open();
  919. SQLiteCommand command = c.CreateCommand();
  920. String fieldDateName = String.Format("w{0}_data", NoOfPayment); ;
  921. String fieldOsobaName = String.Format("w{0}_osoba", NoOfPayment); ;
  922. command.CommandText = String.Format("update Kurs set {0} = '{2}', {1} = '{3}' where id = {4}", fieldDateName, fieldOsobaName, date.ToString("yyyy-MM-dd"), user.Id, kurs.Id);
  923. int i = command.ExecuteNonQuery();
  924. if (i != 1)
  925. {
  926. throw new Exception("Błąd przy aktualizacji danych typu kursu!");
  927. }
  928. else
  929. {
  930. KursantManager km = new KursantManager();
  931. switch (NoOfPayment)
  932. {
  933. case 1:
  934. kurs.Wydruk_1_data = date;
  935. kurs.Wydruk_1_Wprowadzajacy = user;
  936. break;
  937. case 2:
  938. kurs.Wydruk_2_data = date;
  939. kurs.Wydruk_2_Wprowadzajacy = user;
  940. break;
  941. case 3:
  942. kurs.Wydruk_3_data = date;
  943. kurs.Wydruk_3_Wprowadzajacy = user;
  944. break;
  945. }
  946. }
  947. }
  948. catch (Exception e)
  949. {
  950. MessageBox.Show(e.Message);
  951. ret = false;
  952. }
  953. finally
  954. {
  955. if (c.State == System.Data.ConnectionState.Open)
  956. c.Close();
  957. }
  958. return ret;
  959. }
  960. public bool SaveTypKursuBasicData(KursTyp kt)
  961. {
  962. bool ret = true;
  963. SQLiteConnection c = GetConnection();
  964. try
  965. {
  966. if (c.State != System.Data.ConnectionState.Open)
  967. c.Open();
  968. SQLiteCommand command = c.CreateCommand();
  969. //SELECT id, name, isActive FROM
  970. command.CommandText = String.Format("insert into TypyKursow(name,isActive,description,IsRemainder) values ('{0}', {1}, '{2}',{3})", kt.Name, kt.IsActive == false ? 0 : 1, kt.Description, kt.IsRemainder == false ? 0 : 1);
  971. int i = command.ExecuteNonQuery();
  972. if (i != 1)
  973. {
  974. throw new Exception("Błąd przy aktualizacji danych typu kursu!");
  975. }
  976. else
  977. {
  978. command.CommandText = "SELECT last_insert_rowid();";
  979. kt.ID= Convert.ToInt32(command.ExecuteScalar());
  980. }
  981. }
  982. catch (Exception e)
  983. {
  984. MessageBox.Show(e.Message);
  985. ret = false;
  986. }
  987. finally
  988. {
  989. if (c.State == System.Data.ConnectionState.Open)
  990. c.Close();
  991. }
  992. return ret;
  993. }
  994. #endregion
  995. #region KursGodzina
  996. public bool SaveKursGodzinaAndDeactivateOld(KursGodzina kursGodzina, KursGodzina oldKursGodzina, bool clearPrzypomnienie1, bool clearPrzypomnienie2)
  997. {
  998. SQLiteConnection c = GetConnection();
  999. bool ret = true;
  1000. SQLiteTransaction transaction = null;
  1001. try
  1002. {
  1003. if (c.State != System.Data.ConnectionState.Open)
  1004. c.Open();
  1005. transaction = c.BeginTransaction();
  1006. SQLiteCommand command = c.CreateCommand();
  1007. command.Transaction = transaction;
  1008. command.CommandText = "update KursGodzina set aktywna = 0 where id = " + oldKursGodzina.Id.ToString();
  1009. int i = command.ExecuteNonQuery();
  1010. if (i != 1)
  1011. {
  1012. ret = false;
  1013. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1014. }
  1015. if (clearPrzypomnienie1)
  1016. {
  1017. command.CommandText = "UPDATE Kurs SET w1_data = '', w1_osoba = 1 WHERE id = " + oldKursGodzina.KursId.ToString();
  1018. i = command.ExecuteNonQuery();
  1019. if (i != 1)
  1020. {
  1021. ret = false;
  1022. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1023. }
  1024. }
  1025. if (clearPrzypomnienie2)
  1026. {
  1027. command.CommandText = "UPDATE Kurs SET w2_data = '', w2_osoba = 1, w3_data = '', w3_osoba = 1 WHERE id = " + oldKursGodzina.KursId.ToString();
  1028. i = command.ExecuteNonQuery();
  1029. if (i != 1)
  1030. {
  1031. ret = false;
  1032. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1033. }
  1034. }
  1035. command.CommandText = String.Format("insert into KursGodzina(kursId,instruktorId,miejsceId,czas,uzytkownikDodajacy,kursGodzinaTypId,aktywna) values ({0},{1},{2},'{3}',{4},{5},{6})", kursGodzina.KursId, kursGodzina.InstruktorId, kursGodzina.MiejsceId, kursGodzina.Czas.ToString("yyyy-MM-dd HH:mm"), kursGodzina.OsobaDodajaca, (int)kursGodzina.TypGodziny, kursGodzina.Aktywna ? 1 : 0);
  1036. i = command.ExecuteNonQuery();
  1037. if (i != 1)
  1038. {
  1039. ret = false;
  1040. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1041. }
  1042. command.CommandText = "SELECT last_insert_rowid();";
  1043. kursGodzina.Id = Convert.ToInt32(command.ExecuteScalar());
  1044. transaction.Commit();
  1045. }
  1046. catch (Exception e)
  1047. {
  1048. ret = false;
  1049. MessageBox.Show(e.Message);
  1050. transaction.Rollback();
  1051. }
  1052. finally
  1053. {
  1054. if (c.State == System.Data.ConnectionState.Open)
  1055. c.Close();
  1056. }
  1057. return ret;
  1058. }
  1059. public bool SaveKursGodzina(KursGodzina kursGodzina)
  1060. {
  1061. SQLiteConnection c = GetConnection();
  1062. bool ret = true;
  1063. try
  1064. {
  1065. if (c.State != System.Data.ConnectionState.Open)
  1066. c.Open();
  1067. SQLiteCommand command = c.CreateCommand();
  1068. command.CommandText = String.Format("insert into KursGodzina(kursId,instruktorId,miejsceId,czas,uzytkownikDodajacy,kursGodzinaTypId,aktywna) values ({0},{1},{2},'{3}',{4},{5},{6})", kursGodzina.KursId, kursGodzina.InstruktorId, kursGodzina.MiejsceId, kursGodzina.Czas.ToString("yyyy-MM-dd HH:mm"), kursGodzina.OsobaDodajaca, (int)kursGodzina.TypGodziny,kursGodzina.Aktywna ? 1 : 0);
  1069. int i = command.ExecuteNonQuery();
  1070. if (i != 1)
  1071. {
  1072. ret = false;
  1073. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1074. }
  1075. else
  1076. {
  1077. command.CommandText = "SELECT last_insert_rowid();";
  1078. kursGodzina.Id = Convert.ToInt32(command.ExecuteScalar());
  1079. }
  1080. }
  1081. catch (Exception e)
  1082. {
  1083. ret = false;
  1084. MessageBox.Show(e.Message);
  1085. }
  1086. finally
  1087. {
  1088. if (c.State == System.Data.ConnectionState.Open)
  1089. c.Close();
  1090. }
  1091. return ret;
  1092. }
  1093. public bool SetKursGodzinaActivness(long kursgodzinaId, bool aktywny, bool clearPrzypomnienie1, bool clearPrzypomnienie2, long kursId)
  1094. {
  1095. SQLiteConnection c = GetConnection();
  1096. bool ret = true;
  1097. try
  1098. {
  1099. if (c.State != System.Data.ConnectionState.Open)
  1100. c.Open();
  1101. SQLiteCommand command = c.CreateCommand();
  1102. StringBuilder sb = new StringBuilder();
  1103. sb.Append("update KursGodzina set aktywna = " + (aktywny ? "1" : "0") + " where id = " + kursgodzinaId);
  1104. command.CommandText = sb.ToString();
  1105. int i = command.ExecuteNonQuery();
  1106. if (i != 1)
  1107. {
  1108. ret = false;
  1109. throw new Exception("Błąd przy wstawianiu danych kursanta!");
  1110. }
  1111. if (clearPrzypomnienie1)
  1112. {
  1113. command.CommandText = "UPDATE Kurs SET w1_data = '', w1_osoba = 1 WHERE id = " + kursId.ToString();
  1114. i = command.ExecuteNonQuery();
  1115. if (i != 1)
  1116. {
  1117. ret = false;
  1118. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1119. }
  1120. }
  1121. if (clearPrzypomnienie2)
  1122. {
  1123. command.CommandText = "UPDATE Kurs SET w2_data = '', w2_osoba = 1, w3_data = '', w3_osoba = 1 WHERE id = " + kursId.ToString();
  1124. i = command.ExecuteNonQuery();
  1125. if (i != 1)
  1126. {
  1127. ret = false;
  1128. throw new Exception("Błąd przy wstawianiu danych godziny kursu!");
  1129. }
  1130. }
  1131. }
  1132. catch (Exception e)
  1133. {
  1134. ret = false;
  1135. MessageBox.Show(e.Message);
  1136. }
  1137. finally
  1138. {
  1139. if (c.State == System.Data.ConnectionState.Open)
  1140. c.Close();
  1141. }
  1142. return ret;
  1143. }
  1144. public List<KursGodzina> GetGodzinyForKurs(Kurs kurs, GodzinaTyp godzinaTyp, bool onlyAktywne, SQLiteConnection _c)
  1145. {
  1146. List<KursGodzina> lista = new List<KursGodzina>();
  1147. bool ownConnection = false;
  1148. SQLiteConnection c;
  1149. if (_c == null)
  1150. {
  1151. c = GetConnection();
  1152. ownConnection = false;
  1153. }
  1154. else
  1155. {
  1156. c = _c;
  1157. ownConnection = true;
  1158. }
  1159. try
  1160. {
  1161. if (c.State != System.Data.ConnectionState.Open)
  1162. c.Open();
  1163. SQLiteCommand command = c.CreateCommand();
  1164. StringBuilder sb = new StringBuilder();
  1165. sb.Append("SELECT Id, kursId,instruktorId,miejsceId,czas,uzytkownikDodajacy,kursGodzinaTypId,aktywna FROM KursGodzina where ");
  1166. sb.Append(" kursId = " + kurs.Id + " and kursGodzinaTypId = " + (int)godzinaTyp);
  1167. if (onlyAktywne)
  1168. sb.Append(" and aktywna = 1 ");
  1169. command.CommandText = sb.ToString();
  1170. SQLiteDataReader reader = command.ExecuteReader();
  1171. while (reader.Read())
  1172. {
  1173. KursGodzina kursGodzina = new KursGodzina();
  1174. kursGodzina.Id = reader.GetInt64(0);
  1175. kursGodzina.KursId = reader.GetInt64(1);
  1176. kursGodzina.InstruktorId = reader.GetInt64(2);
  1177. kursGodzina.MiejsceId = reader.GetInt64(3);
  1178. kursGodzina.Czas = reader.GetDateTime(4);
  1179. kursGodzina.OsobaDodajaca = reader.GetInt64(5);
  1180. kursGodzina.TypGodziny = godzinaTyp;
  1181. kursGodzina.Aktywna = reader.GetBoolean(7);
  1182. lista.Add(kursGodzina);
  1183. }
  1184. }
  1185. catch (Exception e)
  1186. {
  1187. MessageBox.Show(e.Message);
  1188. }
  1189. finally
  1190. {
  1191. if (!ownConnection &&c.State == System.Data.ConnectionState.Open)
  1192. c.Close();
  1193. }
  1194. return lista;
  1195. }
  1196. #endregion
  1197. /// <summary>
  1198. /// Funkcja sprawdza czy godzina nie wypada w terminie kiedy nie moze wypasc
  1199. /// tak naprawde sprawdzam czy np godzina teorii nie wypada po jezdzie
  1200. /// </summary>
  1201. /// <returns></returns>
  1202. public static String CheckGodziny(Godzina godzinaTmp, Kurs kurs, GodzinaTyp? godzinaTyp, DateTime godzina)
  1203. {
  1204. String Error = "";
  1205. if (godzinaTmp != null && kurs != null && godzinaTyp != null)
  1206. {
  1207. DateTime? dtMinJazda = kurs.GetMinDateTimeForTypGodziny(GodzinaTyp.JAZDA);
  1208. DateTime? dtMinDodatkowa = kurs.GetMinDateTimeForTypGodziny(GodzinaTyp.DODATKOWA);
  1209. DateTime? dtMinEJazda = kurs.GetMinDateTimeForTypGodziny(GodzinaTyp.EJAZDA);
  1210. DateTime? dtMinETeoria = kurs.GetMinDateTimeForTypGodziny(GodzinaTyp.ETEORIA);
  1211. DateTime? dtMaxTeoria = kurs.GetMaxDateTimeForTypGodziny(GodzinaTyp.TEORIA);
  1212. DateTime? dtMaxJazda = kurs.GetMaxDateTimeForTypGodziny(GodzinaTyp.JAZDA);
  1213. DateTime? dtMaxDodatkowa = kurs.GetMaxDateTimeForTypGodziny(GodzinaTyp.DODATKOWA);
  1214. DateTime? dtMaxEJazda = kurs.GetMaxDateTimeForTypGodziny(GodzinaTyp.EJAZDA);
  1215. DateTime? dtMaxETeoria = kurs.GetMaxDateTimeForTypGodziny(GodzinaTyp.ETEORIA);
  1216. #region teoria
  1217. if (godzinaTyp.Value == GodzinaTyp.TEORIA)
  1218. {
  1219. if (dtMinJazda != null && godzina >= dtMinJazda)
  1220. Error = "Nie można przypisać Teorii po ustalonych Jazdach!";
  1221. else if (dtMinDodatkowa != null && godzina >= dtMinDodatkowa)
  1222. Error = "Nie można przypisać Teorii po ustalonych godzinach dodatkowych!";
  1223. else if (dtMinETeoria != null && godzina >= dtMinETeoria)
  1224. Error = "Nie można przypisać Teorii po ustalonym egzaminie teoretycznym!";
  1225. else if (dtMinEJazda != null && godzina >= dtMinEJazda)
  1226. Error = "Nie można przypisać Teorii po ustalonym egzaminie z jazd!";
  1227. }
  1228. #endregion
  1229. #region Jazda
  1230. else if (godzinaTyp.Value == GodzinaTyp.JAZDA)
  1231. {
  1232. if (kurs.GodzinyTeorii.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHTeoria(DateTime.Now))
  1233. Error = "Nie wszystkie godziny teorii są przypisane!";
  1234. else if (dtMaxTeoria != null && godzina <= dtMaxTeoria)
  1235. Error = "Nie można przypisać Jazdy przed ostatnią godziną Teorii!";
  1236. else if (dtMinDodatkowa != null && godzina >= dtMinDodatkowa)
  1237. Error = "Nie można przypisać Jazdy po ustalonych godzinach dodatkowych!";
  1238. else if (dtMinJazda != null && godzina >= dtMinEJazda)
  1239. Error = "Nie można przypisać Jazdy po ustalonym egzaminie z jazd!";
  1240. }
  1241. #endregion
  1242. #region dodatkowa
  1243. else if (godzinaTyp.Value == GodzinaTyp.DODATKOWA)
  1244. {
  1245. if (kurs.GodzinyTeorii.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHTeoria(DateTime.Now))
  1246. Error = "Nie wszystkie godziny teorii są przypisane!";
  1247. else if (dtMaxTeoria != null && godzina <= dtMaxTeoria)
  1248. Error = "Nie można przypisać g. dodatk. przed ostatnią godziną Teorii!";
  1249. else if (dtMaxJazda != null && godzina <= dtMaxJazda)
  1250. Error = "Nie można przypisać g. dodatk. przed ostatnią godziną Jazdy!";
  1251. else if (kurs.GodzinyJazdy.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHJazda(DateTime.Now))
  1252. Error = "Nie wszystkie godziny jazdy są przypisane!";
  1253. else if (dtMinJazda != null && godzina >= dtMinEJazda)
  1254. Error = "Nie można przypisać g. dodatk. po ustalonym egzaminie z jazd!";
  1255. }
  1256. #endregion
  1257. #region egz. teoria
  1258. else if (godzinaTyp.Value == GodzinaTyp.ETEORIA)
  1259. {
  1260. if (kurs.GodzinyTeorii.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHTeoria(DateTime.Now))
  1261. Error = "Nie wszystkie godziny teorii są przypisane!";
  1262. else if (dtMaxTeoria != null && godzina <= dtMaxTeoria)
  1263. Error = "Nie można przypisać g. egzaminu teorii przed ostatnią godziną Teorii!";
  1264. else if (dtMaxTeoria != null && godzina <= dtMaxTeoria)
  1265. Error = "Nie można przypisać g. egzaminu teorii przed ostatnią godziną Teorii!";
  1266. else if (dtMaxJazda != null && godzina <= dtMaxJazda)
  1267. Error = "Nie można przypisać g. egzaminu teorii przed ostatnią godziną Jazdy!";
  1268. }
  1269. #endregion
  1270. #region egz, jazda
  1271. else if (godzinaTyp.Value == GodzinaTyp.EJAZDA)
  1272. {
  1273. if (kurs.GodzinyTeorii.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHTeoria(DateTime.Now))
  1274. Error = "Nie wszystkie godziny teorii są przypisane!";
  1275. else if (kurs.GodzinyJazdy.FindAll(o => o.Aktywna).Count < kurs.TypKursu.GetNoHJazda(DateTime.Now))
  1276. Error = "Nie wszystkie godziny jazd są przypisane!";
  1277. else if (dtMaxTeoria != null && godzina <= dtMaxTeoria)
  1278. Error = "Nie można przypisać g. egzaminu jazdy przed ostatnią godziną Teorii!";
  1279. else if (dtMaxJazda != null && godzina <= dtMaxJazda)
  1280. Error = "Nie można przypisać g. egzaminu jazdy przed ostatnią godziną Jazdy!";
  1281. }
  1282. #endregion
  1283. }
  1284. return Error;
  1285. }
  1286. }
  1287. }