Advertisement
Guest User

Untitled

a guest
May 24th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.08 KB | None | 0 0
  1.         [SqlText("default", "SELECT ansatt_nr AS EmployeeNo,fravaerskode.fravaerskode_nr AS AbsenceCodeNo,fravaerskode_navn AS AbsenceCodeName, CASE WHEN planlagt_fravaer_fra_dato > ? THEN planlagt_fravaer_fra_dato ELSE ? END AS FromDate,planlagt_fravaer_til_dato AS ToDate " +
  2.                             "FROM planlagt_fravaer,fravaerskode WHERE planlagt_fravaer.fravaerskode_nr=fravaerskode.fravaerskode_nr AND ansatt_nr IN({0}) AND {1} AND planlagt_fravaer_til_dato>=? AND planlagt_fravaer_fra_dato<=? " +
  3.                             "UNION SELECT ansatt_nr AS EmployeeNo,avviks_nr AS AbsenceCodeNo,fravaerskode_navn AS AbsenceCodeName, CASE WHEN avvik_fradato > ? THEN avvik_fradato ELSE ? END AS FromDate, avvik_tildato AS ToDate " +
  4.                             "FROM ansatt_avvik,fravaerskode WHERE avviks_nr=fravaerskode.fravaerskode_nr AND ansatt_nr IN({0}) AND {2} AND avvik_fradato<=? AND (avvik_tildato>=? OR avvik_tildato IS NULL)")]
  5.         public List<AbsenceCodeCargoSimpel> ListFuturePlannedAbsenceAndSickLeaveAbsenceForEmployee(List<long> positionsIdList, List<int> absenceCodes, DatoIntervall dates, ITransactionHelper transaction) {
  6.             Log.TraceEntry(positionsIdList, absenceCodes, dates, transaction);
  7.             var absenceCodeCargoSimpels = new List<AbsenceCodeCargoSimpel>();
  8.             if (positionsIdList.Count == 0 || absenceCodes.Count == 0)
  9.                 return absenceCodeCargoSimpels;
  10.  
  11.             IDataReader dr = null;
  12.             IDataHelper dh = OleDbDataHelper.GetInstance();
  13.             const string inClausePlanlagtFravaer = "fravaerskode.fravaerskode_nr IN({0})";
  14.             const string inClauseAnsattAvvik = "avviks_nr IN({0})";
  15.             string positions = string.Join(",", Array.ConvertAll(positionsIdList.ToArray(), Convert.ToString));
  16.             string expandedInClausePlanlagtFravaer = SQLHelper.ExpandInClause(inClausePlanlagtFravaer, absenceCodes);
  17.             string expandedInClauseAnsattAvvik = SQLHelper.ExpandInClause(inClauseAnsattAvvik, absenceCodes);
  18.             string parameterizedSql = string.Format(GetSql, positions, expandedInClausePlanlagtFravaer, expandedInClauseAnsattAvvik);
  19.             try {
  20.                 IDataParameter[] parameters = {
  21.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(DateTime.Today)),
  22.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(DateTime.Today)),
  23.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(dates.Start)),
  24.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(dates.Slutt)),
  25.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(DateTime.Today)),
  26.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(DateTime.Today)),
  27.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(dates.Slutt)),
  28.                     new OleDbParameter("", DataHelper.dateTime2dbDateTimeFormat(dates.Start))
  29.                 };
  30.                 dr = transaction == null
  31.                     ? dh.ExecuteReader(CommandType.Text, parameterizedSql, parameters)
  32.                     : dh.ExecuteReader(transaction, CommandType.Text, parameterizedSql, parameters);
  33.                 var reader = new AbsenceCargoSimpleWithDescriptionReader(dr);
  34.                 while(dr.Read()) {
  35.                     var cargoSimpel = new AbsenceCodeCargoSimpel(reader.EmployeeNo, reader.AbsenceCodeNo,
  36.                         reader.AbsenceCodeName, reader.FromDate, reader.ToDate);
  37.                     absenceCodeCargoSimpels.Add(cargoSimpel);
  38.                 }
  39.             } catch(OleDbException odbException) {
  40.                 var kie = new KlarteIkkeHenteDataException("Could not fetch absence plan for employee. Error message: " + odbException.Message, odbException);
  41.                 throw kie;
  42.             } finally {
  43.                 // Clean up. Must be in the finally block to clean up if something else would fail.
  44.                 dr?.Close();
  45.             }              
  46.             Log.TraceExit(absenceCodeCargoSimpels);
  47.             return absenceCodeCargoSimpels;
  48.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement