DepartmentCase.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System.Linq;
  2. using GCHR.Model.Konto;
  3. namespace GCHR.Control
  4. {
  5. public class DepartmentCase
  6. {
  7. private readonly string[] _markenCase4 = new[] { "1", "2", "3" };
  8. private readonly string _hauptbetrieb;
  9. private readonly string _hauptmarke;
  10. private readonly string _bilanzBetrieb = "07";
  11. private readonly string _bilanzMarke = "0";
  12. private readonly string _betriebWildcard;
  13. private readonly string _markeWildcard;
  14. private readonly int _kontoLaenge;
  15. public DepartmentCase(string marke, string betrieb, string bilanzMarke, string bilanzBetrieb, int kontoLaenge)
  16. {
  17. _hauptmarke = marke;
  18. _hauptbetrieb = betrieb;
  19. _bilanzMarke = bilanzMarke;
  20. _bilanzBetrieb = bilanzBetrieb;
  21. _markeWildcard = new string('?', _hauptmarke.Length);
  22. _betriebWildcard = new string('?', _hauptbetrieb.Length);
  23. _kontoLaenge = kontoLaenge;
  24. }
  25. public void DepartmentUmwandeln(HaendlerKonto konto)
  26. {
  27. if (konto.Case == null || konto.Case.Length <= 0) return;
  28. var departmentCase = konto.Case.Replace("-", "");
  29. switch (departmentCase.Substring(0, 1))
  30. {
  31. case "1":
  32. konto.Marke = MarkeAusCaseOderHauptmarke(departmentCase);
  33. konto.Betrieb = _hauptbetrieb;
  34. return;
  35. case "2":
  36. if (departmentCase.Length > 1)
  37. {
  38. konto.Marke = departmentCase.Substring(1);
  39. return;
  40. }
  41. break;
  42. case "3":
  43. konto.Marke = _hauptmarke;
  44. return;
  45. case "4":
  46. if (_markenCase4.Contains(konto.Marke))
  47. {
  48. return;
  49. }
  50. konto.Marke = _hauptmarke;
  51. return;
  52. case "5":
  53. if (departmentCase.Length > 1 || konto.Kontonummer.Length > _kontoLaenge)
  54. {
  55. var dept = (departmentCase.Length > 1) ? departmentCase.Substring(1) : konto.Kontonummer;
  56. konto.Marke = Marke(dept);
  57. konto.Betrieb = Betrieb(dept);
  58. }
  59. konto.Marke = (konto.Marke == null || konto.Marke == _markeWildcard) ? _hauptmarke : konto.Marke;
  60. konto.Betrieb = (konto.Betrieb == null || konto.Betrieb == _betriebWildcard) ? _hauptbetrieb : konto.Betrieb;
  61. if (departmentCase.Length > 1 || konto.Kontonummer.Length <= _kontoLaenge) return;
  62. konto.Kontonummer = konto.Kontonummer.Substring(_hauptmarke.Length + _hauptbetrieb.Length);
  63. return;
  64. case "B":
  65. konto.Marke = _bilanzMarke;
  66. konto.Betrieb = _bilanzBetrieb;
  67. return;
  68. default:
  69. break;
  70. }
  71. }
  72. private string MarkeAusCaseOderHauptmarke(string departmentCase)
  73. {
  74. return (departmentCase.Length > 1) ? departmentCase.Substring(1, _hauptmarke.Length) : _hauptmarke;
  75. }
  76. private string Marke(string dept)
  77. {
  78. return dept.Substring(0, _hauptmarke.Length);
  79. }
  80. private string Betrieb (string dept)
  81. {
  82. return dept.Substring(_hauptmarke.Length, _hauptbetrieb.Length);
  83. }
  84. }
  85. }