PageRenderTime 65ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/AutoSzkola/AutoSzkola/DataObjects/Kurs.cs

https://bitbucket.org/wawrzek/autoszkola
C# | 871 lines | 714 code | 110 blank | 47 comment | 220 complexity | c5bd0f73e013a1ba1a0ddd544dd08872 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. namespace EE4IT.AutoSzkola
  7. {
  8. public class Kurs
  9. {
  10. public long Id { get; set; }
  11. public long KursantId { get; set; }
  12. public KursTyp TypKursu { get; set; }
  13. public DateTime DataDodania { get; set; }
  14. public User UzytkownikDodajacy { get; set; }
  15. public Instruktor Instruktor { get; set; }
  16. public Double Cena { get; set; }
  17. public DateTime Rata1Data { get; set; }
  18. public DateTime Rata2Data { get; set; }
  19. public DateTime Rata3Data { get; set; }
  20. public DateTime Rata4Data { get; set; }
  21. public DateTime Rata5Data { get; set; }
  22. public DateTime Rata6Data { get; set; }
  23. public DateTime Rata7Data { get; set; }
  24. public DateTime Rata8Data { get; set; }
  25. public DateTime Rata9Data { get; set; }
  26. public DateTime Rata10Data { get; set; }
  27. public bool Rata1Gotowka { get; set; }
  28. public bool Rata2Gotowka { get; set; }
  29. public bool Rata3Gotowka { get; set; }
  30. public bool Rata4Gotowka { get; set; }
  31. public bool Rata5Gotowka { get; set; }
  32. public bool Rata6Gotowka { get; set; }
  33. public bool Rata7Gotowka { get; set; }
  34. public bool Rata8Gotowka { get; set; }
  35. public bool Rata9Gotowka { get; set; }
  36. public bool Rata10Gotowka { get; set; }
  37. public User Rata1Wprowadzajacy { get; set; }
  38. public User Rata2Wprowadzajacy { get; set; }
  39. public User Rata3Wprowadzajacy { get; set; }
  40. public User Rata4Wprowadzajacy { get; set; }
  41. public User Rata5Wprowadzajacy { get; set; }
  42. public User Rata6Wprowadzajacy { get; set; }
  43. public User Rata7Wprowadzajacy { get; set; }
  44. public User Rata8Wprowadzajacy { get; set; }
  45. public User Rata9Wprowadzajacy { get; set; }
  46. public User Rata10Wprowadzajacy { get; set; }
  47. public Double Rata1Kwota { get; set; }
  48. public Double Rata2Kwota { get; set; }
  49. public Double Rata3Kwota { get; set; }
  50. public Double Rata4Kwota { get; set; }
  51. public Double Rata5Kwota { get; set; }
  52. public Double Rata6Kwota { get; set; }
  53. public Double Rata7Kwota { get; set; }
  54. public Double Rata8Kwota { get; set; }
  55. public Double Rata9Kwota { get; set; }
  56. public Double Rata10Kwota { get; set; }
  57. public Boolean Aktywny { get; set; }
  58. public String Komentarz { get; set; }
  59. public String NumerZaswiadczenia { get; set; }
  60. public DateTime Wydruk_1_data { get; set; }
  61. public User Wydruk_1_Wprowadzajacy { get; set; }
  62. public DateTime Wydruk_2_data { get; set; }
  63. public User Wydruk_2_Wprowadzajacy { get; set; }
  64. public DateTime Wydruk_3_data { get; set; }
  65. public User Wydruk_3_Wprowadzajacy { get; set; }
  66. public List<KursGodzina> GodzinyJazdy { get; set; }
  67. public List<KursGodzina> GodzinyTeorii { get; set; }
  68. public List<KursGodzina> GodzinyDodatkowe { get; set; }
  69. public List<KursGodzina> GodzinyEgzaminJazda { get; set; }
  70. public List<KursGodzina> GodzinyEgzaminTeoria { get; set; }
  71. public Double SumaRat { get { return Rata1Kwota + Rata2Kwota + Rata3Kwota + Rata4Kwota + Rata5Kwota + Rata6Kwota + Rata7Kwota + Rata8Kwota + Rata9Kwota + Rata10Kwota; } }
  72. public override string ToString()
  73. {
  74. return TypKursu.ToString();
  75. }
  76. public string ToString(string format)
  77. {
  78. return TypKursu.ToString(format);
  79. }
  80. public Kurs()
  81. {
  82. Rata1Data = DateTime.MaxValue;
  83. Rata2Data = DateTime.MaxValue;
  84. Rata3Data = DateTime.MaxValue;
  85. Rata4Data = DateTime.MaxValue;
  86. Rata5Data = DateTime.MaxValue;
  87. Rata6Data = DateTime.MaxValue;
  88. Rata7Data = DateTime.MaxValue;
  89. Rata8Data = DateTime.MaxValue;
  90. Rata9Data = DateTime.MaxValue;
  91. Rata10Data = DateTime.MaxValue;
  92. Rata1Gotowka = true;
  93. Rata2Gotowka = true;
  94. Rata3Gotowka = true;
  95. Rata4Gotowka = true;
  96. Rata5Gotowka = true;
  97. Rata6Gotowka = true;
  98. Rata7Gotowka = true;
  99. Rata8Gotowka = true;
  100. Rata9Gotowka = true;
  101. Rata10Gotowka = true;
  102. Rata1Wprowadzajacy = new User();
  103. Rata2Wprowadzajacy = new User();
  104. Rata3Wprowadzajacy = new User();
  105. Rata4Wprowadzajacy = new User();
  106. Rata5Wprowadzajacy = new User();
  107. Rata6Wprowadzajacy = new User();
  108. Rata7Wprowadzajacy = new User();
  109. Rata8Wprowadzajacy = new User();
  110. Rata9Wprowadzajacy = new User();
  111. Rata10Wprowadzajacy = new User();
  112. Rata1Kwota = 0;
  113. Rata2Kwota = 0;
  114. Rata3Kwota = 0;
  115. Rata4Kwota = 0;
  116. Rata5Kwota = 0;
  117. Rata6Kwota = 0;
  118. Rata7Kwota = 0;
  119. Rata8Kwota = 0;
  120. Rata9Kwota = 0;
  121. Rata10Kwota = 0;
  122. Aktywny = true;
  123. Wydruk_1_Wprowadzajacy = new User();
  124. Wydruk_2_Wprowadzajacy = new User();
  125. Wydruk_3_Wprowadzajacy = new User();
  126. Wydruk_1_data = DateTime.MaxValue;
  127. Wydruk_2_data = DateTime.MaxValue;
  128. Wydruk_3_data = DateTime.MaxValue;
  129. }
  130. public bool NeedSend()
  131. {
  132. return TypKursu.IsRemainder && (NeedSendPrint1() || NeedSendPrint2() || NeedSendPrint3());
  133. }
  134. //wprowadzona jest godzina jazdy i godzina teorii a nie ma ustawionej daty
  135. public bool NeedSendPrint1()
  136. {
  137. int count = 0;
  138. //zmiana od sierpnia - nie wysylamy z pierwsza jazda
  139. //if (Wydruk_1_data == DateTime.MaxValue && (GodzinyTeorii.FindAll(o => o.Aktywna).Count > 0 || GodzinyJazdy.FindAll(o => o.Aktywna).Count > 0))
  140. if (Wydruk_1_data == DateTime.MaxValue && (GodzinyTeorii.FindAll(o => o.Aktywna).Count > 0))
  141. {
  142. count = 2;
  143. //if (GetNoOfHours(GodzinaTyp.TEORIA) > 0)
  144. //{
  145. // if (GetMinDateTimeForTypGodziny(GodzinaTyp.TEORIA).HasValue && GetMinDateTimeForTypGodziny(GodzinaTyp.TEORIA).Value.CompareTo(DateTime.MinValue) > 0)
  146. // count++;
  147. //}
  148. //if (GetNoOfHours(GodzinaTyp.JAZDA) > 0)
  149. //{
  150. // if (GetMinDateTimeForTypGodziny(GodzinaTyp.JAZDA).HasValue && GetMinDateTimeForTypGodziny(GodzinaTyp.JAZDA).Value.CompareTo(DateTime.MinValue) > 0)
  151. // count++;
  152. //}
  153. }
  154. return count == 2;
  155. }
  156. //Trzy dni wcześniej o egzaminie wewnętrznym(teoria lub praktyka)
  157. public bool NeedSendPrint2()
  158. {
  159. bool res = false;
  160. //if (Wydruk_2_data == DateTime.MaxValue && (GetNoOfHours(GodzinaTyp.ETEORIA) > 0 || GetNoOfHours(GodzinaTyp.EJAZDA) > 0 ))
  161. // egzamin wewnetrzny - nie ma wymogu
  162. //if (Wydruk_2_data == DateTime.MaxValue && (GodzinyEgzaminTeoria.FindAll(o => o.Aktywna).Count > 0 || GodzinyEgzaminJazda.FindAll(o => o.Aktywna).Count > 0))
  163. //{
  164. // res = true;
  165. //}
  166. return res;
  167. }
  168. //Osoby które zakończyły szkolenie(w/g ustawy mamy na to 2 tygodnie)
  169. public bool NeedSendPrint3()
  170. {
  171. return Wydruk_3_data == DateTime.MaxValue && GetEndDateTime().CompareTo(DateTime.MinValue) > 0 && GetEndDateTime().AddHours(1).CompareTo(DateTime.Now) <= 0;
  172. }
  173. /// <summary>
  174. /// Number of active assigned hours of given course which are already done
  175. /// </summary>
  176. /// <param name="godzinaTyp"></param>
  177. /// <returns></returns>
  178. public int GetNoOfHours(GodzinaTyp godzinaTyp)
  179. {
  180. int ret = 0;
  181. switch (godzinaTyp)
  182. {
  183. case GodzinaTyp.DODATKOWA:
  184. if (GodzinyDodatkowe != null)
  185. {
  186. ret = GodzinyDodatkowe.FindAll(o => o.Czas < DateTime.Now && o.Aktywna).Count;
  187. }
  188. break;
  189. case GodzinaTyp.JAZDA:
  190. if (GodzinyJazdy != null)
  191. {
  192. ret = GodzinyJazdy.FindAll(o => o.Czas < DateTime.Now && o.Aktywna).Count;
  193. }
  194. break;
  195. case GodzinaTyp.TEORIA:
  196. if (GodzinyTeorii != null)
  197. {
  198. ret = GodzinyTeorii.FindAll(o => o.Czas < DateTime.Now && o.Aktywna).Count;
  199. }
  200. break;
  201. case GodzinaTyp.EJAZDA:
  202. if (GodzinyEgzaminJazda != null)
  203. {
  204. ret = GodzinyEgzaminJazda.FindAll(o => o.Czas < DateTime.Now && o.Aktywna).Count;
  205. }
  206. break;
  207. case GodzinaTyp.ETEORIA:
  208. if (GodzinyEgzaminTeoria != null)
  209. {
  210. ret = GodzinyEgzaminTeoria.FindAll(o => o.Czas < DateTime.Now && o.Aktywna).Count;
  211. }
  212. break;
  213. }
  214. return ret;
  215. }
  216. public Double GetCurrValueOfKurs()
  217. {
  218. Double cenaJazda = 0;
  219. Double cenaTeoria = 0;
  220. Double cenaEgzaminJazda = 0;
  221. Double cenaEgzaminTeoria = 0;
  222. Double cenaDodatkowa = 0;
  223. if (GodzinyJazdy != null)
  224. {
  225. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  226. //cenaJazda = (Double)(listJ.Count * TypKursu.GetCenaJazda());
  227. foreach (KursGodzina kursGodzina in listJ)
  228. cenaJazda += TypKursu.GetCenaJazda(kursGodzina.Czas);
  229. }
  230. if (GodzinyTeorii != null)
  231. {
  232. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  233. //cenaTeoria = (Double)(listT.Count * TypKursu.GetCenaTeoria());
  234. foreach (KursGodzina kursGodzina in listT)
  235. cenaTeoria += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  236. }
  237. if (GodzinyDodatkowe != null)
  238. {
  239. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  240. //cenaDodatkowa = (Double)(listD.Count * TypKursu.GetCenaDodatkowa());
  241. foreach (KursGodzina kursGodzina in listD)
  242. cenaDodatkowa += TypKursu.GetCenaDodatkowa(kursGodzina.Czas);
  243. }
  244. if (GodzinyEgzaminJazda != null)
  245. {
  246. List<KursGodzina> listEJ = GodzinyEgzaminJazda.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  247. //cenaEgzaminJazda = (Double)(listEJ.Count * TypKursu.GetCenaEgzaminJazda());
  248. foreach (KursGodzina kursGodzina in listEJ)
  249. cenaEgzaminJazda += TypKursu.GetCenaEgzaminJazda(kursGodzina.Czas);
  250. }
  251. if (GodzinyEgzaminTeoria != null)
  252. {
  253. List<KursGodzina> listET = GodzinyEgzaminTeoria.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  254. //cenaEgzaminTeoria = (Double)(listET.Count * TypKursu.GetCenaEgzaminTeoria());
  255. foreach (KursGodzina kursGodzina in listET)
  256. cenaEgzaminTeoria += TypKursu.GetCenaEgzaminTeoria(kursGodzina.Czas);
  257. }
  258. return cenaJazda + cenaTeoria + cenaDodatkowa + cenaEgzaminTeoria + cenaEgzaminJazda;
  259. }
  260. public Double GetCurrValueOfKurs(Double cenaPoRabacie)
  261. {
  262. Double cenaJazda = 0;
  263. Double cenaTeoria = 0;
  264. Double cenaEgzaminJazda = 0;
  265. Double cenaEgzaminTeoria = 0;
  266. Double cenaDodatkowa = 0;
  267. if (GodzinyJazdy != null)
  268. {
  269. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  270. //cenaJazda = (Double)(listJ.Count * TypKursu.GetCenaJazda());
  271. foreach (KursGodzina kursGodzina in listJ)
  272. cenaJazda += TypKursu.GetCenaJazda(kursGodzina.Czas);
  273. }
  274. if (GodzinyTeorii != null)
  275. {
  276. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  277. //cenaTeoria = (Double)(listT.Count * TypKursu.GetCenaTeoria());
  278. foreach (KursGodzina kursGodzina in listT)
  279. cenaTeoria += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  280. }
  281. if (GodzinyDodatkowe != null)
  282. {
  283. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  284. //cenaDodatkowa = (Double)(listD.Count * TypKursu.GetCenaDodatkowa());
  285. foreach (KursGodzina kursGodzina in listD)
  286. cenaDodatkowa += TypKursu.GetCenaDodatkowa(kursGodzina.Czas);
  287. }
  288. if (GodzinyEgzaminJazda != null)
  289. {
  290. List<KursGodzina> listEJ = GodzinyEgzaminJazda.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  291. //cenaEgzaminJazda = (Double)(listEJ.Count * TypKursu.GetCenaEgzaminJazda());
  292. foreach (KursGodzina kursGodzina in listEJ)
  293. cenaEgzaminJazda += TypKursu.GetCenaEgzaminJazda(kursGodzina.Czas);
  294. }
  295. if (GodzinyEgzaminTeoria != null)
  296. {
  297. List<KursGodzina> listET = GodzinyEgzaminTeoria.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  298. //cenaEgzaminTeoria = (Double)(listET.Count * TypKursu.GetCenaEgzaminTeoria());
  299. foreach (KursGodzina kursGodzina in listET)
  300. cenaEgzaminTeoria += TypKursu.GetCenaEgzaminTeoria(kursGodzina.Czas);
  301. }
  302. return Math.Min(cenaJazda + cenaTeoria, cenaPoRabacie) + cenaDodatkowa + cenaEgzaminTeoria + cenaEgzaminJazda;
  303. }
  304. public Double CenaZDodatkami
  305. {
  306. get
  307. {
  308. Double cenaEgzaminJazda = 0;
  309. Double cenaEgzaminTeoria = 0;
  310. Double cenaDodatkowa = 0;
  311. if (GodzinyDodatkowe != null)
  312. {
  313. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  314. //cenaDodatkowa = (Double)(listD.Count * TypKursu.GetCenaDodatkowa());
  315. foreach (KursGodzina kursGodzina in listD)
  316. cenaDodatkowa += TypKursu.GetCenaDodatkowa(kursGodzina.Czas);
  317. }
  318. if (GodzinyEgzaminJazda != null)
  319. {
  320. List<KursGodzina> listEJ = GodzinyEgzaminJazda.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  321. //cenaEgzaminJazda = (Double)(listEJ.Count * TypKursu.GetCenaEgzaminJazda());
  322. foreach (KursGodzina kursGodzina in listEJ)
  323. cenaEgzaminJazda += TypKursu.GetCenaEgzaminJazda(kursGodzina.Czas);
  324. }
  325. if (GodzinyEgzaminTeoria != null)
  326. {
  327. List<KursGodzina> listET = GodzinyEgzaminTeoria.FindAll(o => o.Czas < DateTime.Now && o.Aktywna);
  328. //cenaEgzaminTeoria = (Double)(listET.Count * TypKursu.GetCenaEgzaminTeoria());
  329. foreach (KursGodzina kursGodzina in listET)
  330. cenaEgzaminTeoria += TypKursu.GetCenaEgzaminTeoria(kursGodzina.Czas);
  331. }
  332. return Cena + cenaDodatkowa + cenaEgzaminTeoria + cenaEgzaminJazda;
  333. }
  334. }
  335. /// <summary>
  336. /// Function returns info if value of hours which shall be before sepcified godzina exceed sum of payments
  337. /// </summary>
  338. /// <param name="godzinaTyp"></param>
  339. /// <param name="number"></param>
  340. /// <returns></returns>
  341. public bool IsNadgodzina(GodzinaTyp godzinaTyp, int number)
  342. {
  343. Double value = 0;
  344. if (godzinaTyp == GodzinaTyp.TEORIA)
  345. {
  346. //value = (Double)(number * TypKursu.GetCenaTeoria());
  347. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Aktywna);
  348. for (int i = 0; i < listT.Count && i < number; i++)
  349. value += TypKursu.GetCenaTeoria(listT[i].Czas);
  350. value = Math.Min(Cena, value);
  351. }
  352. else if (godzinaTyp == GodzinaTyp.JAZDA)
  353. {
  354. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Aktywna);
  355. foreach (KursGodzina kursGodzina in listT)
  356. value += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  357. //value += (Double)(number * TypKursu.GetCenaJazda());
  358. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o => o.Aktywna);
  359. for (int i = 0; i < listJ.Count && i < number; i++)
  360. value += TypKursu.GetCenaJazda(listJ[i].Czas);
  361. value = Math.Min(Cena, value);
  362. }
  363. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  364. {
  365. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Aktywna);
  366. foreach (KursGodzina kursGodzina in listT)
  367. value += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  368. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o =>o.Aktywna);
  369. foreach (KursGodzina kursGodzina in listJ)
  370. value += TypKursu.GetCenaJazda(kursGodzina.Czas);
  371. value = Math.Min(Cena, value);
  372. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Aktywna);
  373. for (int i = 0; i < listD.Count && i < number; i++)
  374. value += TypKursu.GetCenaDodatkowa(listD[i].Czas);
  375. }
  376. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  377. {
  378. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Aktywna);
  379. foreach (KursGodzina kursGodzina in listT)
  380. value += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  381. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o => o.Aktywna);
  382. foreach (KursGodzina kursGodzina in listJ)
  383. value += TypKursu.GetCenaJazda(kursGodzina.Czas);
  384. value = Math.Min(Cena, value);
  385. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Aktywna);
  386. foreach (KursGodzina kursGodzina in listD)
  387. value += TypKursu.GetCenaDodatkowa(kursGodzina.Czas);
  388. List<KursGodzina> listET = GodzinyEgzaminTeoria.FindAll(o => o.Aktywna);
  389. for (int i = 0; i < listET.Count && i < number; i++)
  390. value += TypKursu.GetCenaEgzaminTeoria(listET[i].Czas);
  391. }
  392. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  393. {
  394. List<KursGodzina> listT = GodzinyTeorii.FindAll(o => o.Aktywna);
  395. foreach (KursGodzina kursGodzina in listT)
  396. value += TypKursu.GetCenaTeoria(kursGodzina.Czas);
  397. List<KursGodzina> listJ = GodzinyJazdy.FindAll(o => o.Aktywna);
  398. foreach (KursGodzina kursGodzina in listJ)
  399. value += TypKursu.GetCenaJazda(kursGodzina.Czas);
  400. value = Math.Min(Cena, value);
  401. List<KursGodzina> listD = GodzinyDodatkowe.FindAll(o => o.Aktywna);
  402. foreach (KursGodzina kursGodzina in listD)
  403. value += TypKursu.GetCenaDodatkowa(kursGodzina.Czas);
  404. List<KursGodzina> listET = GodzinyEgzaminTeoria.FindAll(o => o.Aktywna);
  405. foreach (KursGodzina kursGodzina in listET)
  406. value += TypKursu.GetCenaEgzaminTeoria(kursGodzina.Czas);
  407. List<KursGodzina> listEJ = GodzinyEgzaminJazda.FindAll(o => o.Aktywna);
  408. for (int i = 0; i < listEJ.Count && i < number; i++)
  409. value += TypKursu.GetCenaEgzaminJazda(listEJ[i].Czas);
  410. }
  411. return (SumaRat) - value < 0;
  412. }
  413. public bool IsFirstGodzina(GodzinaTyp godzinaTyp, long godzinaId)
  414. {
  415. bool ret = false;
  416. KursGodzina firstGodzina = GetFirstKursGodzinaForTypGodziny(godzinaTyp);
  417. if (firstGodzina != null && firstGodzina.Id == godzinaId)
  418. ret = true;
  419. return ret;
  420. }
  421. public bool IsTypGodzinyCompleted(GodzinaTyp godzinaTyp)
  422. {
  423. if (godzinaTyp == GodzinaTyp.TEORIA)
  424. {
  425. return TypKursu.GetNoHTeoria(DateTime.Now) >= 0 && !(GodzinyTeorii.FindAll(o => o.Aktywna).Count < TypKursu.GetNoHTeoria(DateTime.Now));
  426. }
  427. else if (godzinaTyp == GodzinaTyp.JAZDA)
  428. {
  429. return TypKursu.GetNoHJazda(DateTime.Now) >= 0 && !(GodzinyJazdy.FindAll(o => o.Aktywna).Count < TypKursu.GetNoHJazda(DateTime.Now));
  430. }
  431. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  432. {
  433. return TypKursu.GetNoHDodatkowa(DateTime.Now) >= 0 && !(GodzinyDodatkowe.FindAll(o => o.Aktywna).Count < TypKursu.GetNoHDodatkowa(DateTime.Now));
  434. }
  435. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  436. {
  437. return TypKursu.GetNoHEgJazda(DateTime.Now) >= 0 && !(GodzinyEgzaminJazda.FindAll(o => o.Aktywna).Count < TypKursu.GetNoHEgJazda(DateTime.Now));
  438. }
  439. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  440. {
  441. return TypKursu.GetNoHEgTeoria(DateTime.Now) >= 0 && !(GodzinyEgzaminTeoria.FindAll(o => o.Aktywna).Count < TypKursu.GetNoHEgTeoria(DateTime.Now));
  442. }
  443. return false;
  444. }
  445. public KursGodzina GetFirstKursGodzinaForTypGodziny(GodzinaTyp godzinaTyp)
  446. {
  447. KursGodzina dt = null;
  448. if (godzinaTyp == GodzinaTyp.TEORIA && GodzinyTeorii != null)
  449. {
  450. DateTime tmpDT = DateTime.MaxValue;
  451. foreach (KursGodzina kursGodzina in GodzinyTeorii.FindAll(o => o.Aktywna))
  452. {
  453. if (tmpDT > kursGodzina.Czas)
  454. {
  455. tmpDT = kursGodzina.Czas;
  456. dt = kursGodzina;
  457. }
  458. }
  459. }
  460. else if (godzinaTyp == GodzinaTyp.JAZDA)
  461. {
  462. DateTime tmpDT = DateTime.MaxValue;
  463. foreach (KursGodzina kursGodzina in GodzinyJazdy.FindAll(o => o.Aktywna))
  464. {
  465. if (tmpDT > kursGodzina.Czas)
  466. {
  467. tmpDT = kursGodzina.Czas;
  468. dt = kursGodzina;
  469. }
  470. }
  471. }
  472. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  473. {
  474. DateTime tmpDT = DateTime.MaxValue;
  475. foreach (KursGodzina kursGodzina in GodzinyDodatkowe.FindAll(o => o.Aktywna))
  476. {
  477. if (tmpDT > kursGodzina.Czas)
  478. {
  479. tmpDT = kursGodzina.Czas;
  480. dt = kursGodzina;
  481. }
  482. }
  483. }
  484. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  485. {
  486. DateTime tmpDT = DateTime.MaxValue;
  487. foreach (KursGodzina kursGodzina in GodzinyEgzaminJazda.FindAll(o => o.Aktywna))
  488. {
  489. if (tmpDT > kursGodzina.Czas)
  490. {
  491. tmpDT = kursGodzina.Czas;
  492. dt = kursGodzina;
  493. }
  494. }
  495. }
  496. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  497. {
  498. DateTime tmpDT = DateTime.MaxValue;
  499. foreach (KursGodzina kursGodzina in GodzinyEgzaminTeoria.FindAll(o => o.Aktywna))
  500. {
  501. if (tmpDT > kursGodzina.Czas)
  502. {
  503. tmpDT = kursGodzina.Czas;
  504. dt = kursGodzina;
  505. }
  506. }
  507. }
  508. return dt;
  509. }
  510. public KursGodzina GetLastKursGodzinaForTypGodziny(GodzinaTyp godzinaTyp)
  511. {
  512. KursGodzina dt = null;
  513. if (godzinaTyp == GodzinaTyp.TEORIA && GodzinyTeorii != null)
  514. {
  515. DateTime tmpDT = DateTime.MinValue;
  516. foreach (KursGodzina kursGodzina in GodzinyTeorii.FindAll(o => o.Aktywna))
  517. {
  518. if (tmpDT < kursGodzina.Czas)
  519. {
  520. tmpDT = kursGodzina.Czas;
  521. dt = kursGodzina;
  522. }
  523. }
  524. }
  525. else if (godzinaTyp == GodzinaTyp.JAZDA)
  526. {
  527. DateTime tmpDT = DateTime.MinValue;
  528. foreach (KursGodzina kursGodzina in GodzinyJazdy.FindAll(o => o.Aktywna))
  529. {
  530. if (tmpDT < kursGodzina.Czas)
  531. {
  532. tmpDT = kursGodzina.Czas;
  533. dt = kursGodzina;
  534. }
  535. }
  536. }
  537. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  538. {
  539. DateTime tmpDT = DateTime.MinValue;
  540. foreach (KursGodzina kursGodzina in GodzinyDodatkowe.FindAll(o => o.Aktywna))
  541. {
  542. if (tmpDT < kursGodzina.Czas)
  543. {
  544. tmpDT = kursGodzina.Czas;
  545. dt = kursGodzina;
  546. }
  547. }
  548. }
  549. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  550. {
  551. DateTime tmpDT = DateTime.MinValue;
  552. foreach (KursGodzina kursGodzina in GodzinyEgzaminJazda.FindAll(o => o.Aktywna))
  553. {
  554. if (tmpDT < kursGodzina.Czas)
  555. {
  556. tmpDT = kursGodzina.Czas;
  557. dt = kursGodzina;
  558. }
  559. }
  560. }
  561. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  562. {
  563. DateTime tmpDT = DateTime.MinValue;
  564. foreach (KursGodzina kursGodzina in GodzinyEgzaminTeoria.FindAll(o => o.Aktywna))
  565. {
  566. if (tmpDT < kursGodzina.Czas)
  567. {
  568. tmpDT = kursGodzina.Czas;
  569. dt = kursGodzina;
  570. }
  571. }
  572. }
  573. return dt;
  574. }
  575. public DateTime? GetMinDateTimeForTypGodziny(GodzinaTyp godzinaTyp)
  576. {
  577. DateTime? dt = null;
  578. if (godzinaTyp == GodzinaTyp.TEORIA && GodzinyTeorii != null)
  579. {
  580. DateTime tmpDT = DateTime.MaxValue;
  581. foreach (KursGodzina kursGodzina in GodzinyTeorii.FindAll(o => o.Aktywna))
  582. {
  583. if (tmpDT > kursGodzina.Czas)
  584. tmpDT = kursGodzina.Czas;
  585. }
  586. if(tmpDT < DateTime.MaxValue)
  587. dt = tmpDT;
  588. }
  589. else if (godzinaTyp == GodzinaTyp.JAZDA)
  590. {
  591. DateTime tmpDT = DateTime.MaxValue;
  592. foreach (KursGodzina kursGodzina in GodzinyJazdy.FindAll(o => o.Aktywna))
  593. {
  594. if (tmpDT > kursGodzina.Czas)
  595. tmpDT = kursGodzina.Czas;
  596. }
  597. if (tmpDT < DateTime.MaxValue)
  598. dt = tmpDT;
  599. }
  600. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  601. {
  602. DateTime tmpDT = DateTime.MaxValue;
  603. foreach (KursGodzina kursGodzina in GodzinyDodatkowe.FindAll(o => o.Aktywna))
  604. {
  605. if (tmpDT > kursGodzina.Czas)
  606. tmpDT = kursGodzina.Czas;
  607. }
  608. if (tmpDT < DateTime.MaxValue)
  609. dt = tmpDT;
  610. }
  611. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  612. {
  613. DateTime tmpDT = DateTime.MaxValue;
  614. foreach (KursGodzina kursGodzina in GodzinyEgzaminJazda.FindAll(o => o.Aktywna))
  615. {
  616. if (tmpDT > kursGodzina.Czas)
  617. tmpDT = kursGodzina.Czas;
  618. }
  619. if (tmpDT < DateTime.MaxValue)
  620. dt = tmpDT;
  621. }
  622. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  623. {
  624. DateTime tmpDT = DateTime.MaxValue;
  625. foreach (KursGodzina kursGodzina in GodzinyEgzaminTeoria.FindAll(o => o.Aktywna))
  626. {
  627. if (tmpDT > kursGodzina.Czas)
  628. tmpDT = kursGodzina.Czas;
  629. }
  630. if (tmpDT < DateTime.MaxValue)
  631. dt = tmpDT;
  632. }
  633. return dt;
  634. }
  635. public DateTime? GetMaxDateTimeForTypGodziny(GodzinaTyp godzinaTyp)
  636. {
  637. DateTime? dt = null;
  638. if (godzinaTyp == GodzinaTyp.TEORIA && GodzinyTeorii != null)
  639. {
  640. DateTime tmpDT = DateTime.MinValue;
  641. foreach (KursGodzina kursGodzina in GodzinyTeorii.FindAll(o => o.Aktywna))
  642. {
  643. if (tmpDT < kursGodzina.Czas)
  644. tmpDT = kursGodzina.Czas;
  645. }
  646. if (tmpDT > DateTime.MinValue)
  647. dt = tmpDT;
  648. }
  649. else if (godzinaTyp == GodzinaTyp.JAZDA)
  650. {
  651. DateTime tmpDT = DateTime.MinValue;
  652. foreach (KursGodzina kursGodzina in GodzinyJazdy.FindAll(o => o.Aktywna))
  653. {
  654. if (tmpDT < kursGodzina.Czas)
  655. tmpDT = kursGodzina.Czas;
  656. }
  657. if (tmpDT > DateTime.MinValue)
  658. dt = tmpDT;
  659. }
  660. else if (godzinaTyp == GodzinaTyp.DODATKOWA)
  661. {
  662. DateTime tmpDT = DateTime.MinValue;
  663. foreach (KursGodzina kursGodzina in GodzinyDodatkowe.FindAll(o => o.Aktywna))
  664. {
  665. if (tmpDT < kursGodzina.Czas)
  666. tmpDT = kursGodzina.Czas;
  667. }
  668. if (tmpDT > DateTime.MinValue)
  669. dt = tmpDT;
  670. }
  671. else if (godzinaTyp == GodzinaTyp.EJAZDA)
  672. {
  673. DateTime tmpDT = DateTime.MinValue;
  674. foreach (KursGodzina kursGodzina in GodzinyEgzaminJazda.FindAll(o => o.Aktywna))
  675. {
  676. if (tmpDT < kursGodzina.Czas)
  677. tmpDT = kursGodzina.Czas;
  678. }
  679. if (tmpDT > DateTime.MinValue)
  680. dt = tmpDT;
  681. }
  682. else if (godzinaTyp == GodzinaTyp.ETEORIA)
  683. {
  684. DateTime tmpDT = DateTime.MinValue;
  685. foreach (KursGodzina kursGodzina in GodzinyEgzaminTeoria.FindAll(o => o.Aktywna))
  686. {
  687. if (tmpDT < kursGodzina.Czas)
  688. tmpDT = kursGodzina.Czas;
  689. }
  690. if (tmpDT > DateTime.MinValue)
  691. dt = tmpDT;
  692. }
  693. return dt;
  694. }
  695. public DateTime GetStartDateTime()
  696. {
  697. DateTime dt = DateTime.MaxValue;
  698. if (this.TypKursu.GetNoHTeoria(DateTime.Now) == 0)
  699. {
  700. foreach (KursGodzina kg in GodzinyJazdy)
  701. {
  702. if (kg.Czas.CompareTo(dt) < 0 && kg.Aktywna)
  703. dt = kg.Czas;
  704. }
  705. }
  706. else
  707. {
  708. foreach (KursGodzina kg in GodzinyTeorii)
  709. {
  710. if (kg.Czas.CompareTo(dt) < 0 && kg.Aktywna)
  711. dt = kg.Czas;
  712. }
  713. }
  714. return dt;
  715. }
  716. public DateTime GetEndDateTime()
  717. {
  718. DateTime dt = DateTime.MinValue;
  719. foreach (KursGodzina kg in GodzinyEgzaminJazda)
  720. {
  721. if (kg.Czas.CompareTo(dt) > 0 && kg.Aktywna)
  722. dt = kg.Czas;
  723. }
  724. return dt;
  725. }
  726. public DateTime GetEgzWewnDateTime(bool isEgzaminJazda)
  727. {
  728. DateTime dt = DateTime.MinValue;
  729. List<KursGodzina> lista = null;
  730. if (isEgzaminJazda)
  731. lista = GodzinyEgzaminJazda;
  732. else
  733. lista = GodzinyEgzaminTeoria;
  734. foreach (KursGodzina kg in lista)
  735. {
  736. if (kg.Czas.CompareTo(dt) > 0 && kg.Aktywna)
  737. dt = kg.Czas;
  738. }
  739. return dt;
  740. }
  741. public long GetEgzWewnMiejsceId(bool isEgzaminJazda)
  742. {
  743. DateTime dt = DateTime.MinValue;
  744. long miejsceId = -1;
  745. List<KursGodzina> lista = null;
  746. if (isEgzaminJazda)
  747. lista = GodzinyEgzaminJazda;
  748. else
  749. lista = GodzinyEgzaminTeoria;
  750. foreach (KursGodzina kg in lista)
  751. {
  752. if (kg.Czas.CompareTo(dt) > 0 && kg.Aktywna)
  753. {
  754. dt = kg.Czas;
  755. miejsceId = kg.MiejsceId;
  756. }
  757. }
  758. return miejsceId;
  759. }
  760. }
  761. }