DepartmentCase.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. if (Marke(dept) != _markeWildcard)
  57. {
  58. konto.Marke = Marke(dept);
  59. }
  60. if (Betrieb(dept) != _betriebWildcard)
  61. {
  62. konto.Betrieb = Betrieb(dept);
  63. }
  64. }
  65. konto.Marke = (konto.Marke == null || konto.Marke.Length < _hauptmarke.Length) ? _hauptmarke : konto.Marke;
  66. konto.Betrieb = (konto.Betrieb == null || konto.Betrieb.Length < _hauptbetrieb.Length) ? _hauptbetrieb : konto.Betrieb;
  67. if (departmentCase.Length > 1 || konto.Kontonummer.Length <= _kontoLaenge) return;
  68. konto.Kontonummer = konto.Kontonummer.Substring(_hauptmarke.Length + _hauptbetrieb.Length);
  69. return;
  70. case "B":
  71. konto.Marke = _bilanzMarke;
  72. konto.Betrieb = _bilanzBetrieb;
  73. return;
  74. default:
  75. break;
  76. }
  77. }
  78. private string MarkeAusCaseOderHauptmarke(string departmentCase)
  79. {
  80. return (departmentCase.Length > 1) ? departmentCase.Substring(1, _hauptmarke.Length) : _hauptmarke;
  81. }
  82. private string Marke(string dept)
  83. {
  84. return dept.Substring(0, _hauptmarke.Length);
  85. }
  86. private string Betrieb (string dept)
  87. {
  88. return dept.Substring(_hauptmarke.Length, _hauptbetrieb.Length);
  89. }
  90. }
  91. }