// 2. private void MapReturnedDataDirectToEntity(ZkTimeDataEventArgs e) { var unprocessedDataEntityList = e.UserClockingData.Select(rawZkTimeDataObj => new ZkTimeClockingRecord { IsActive = true, ClockingTime = rawZkTimeDataObj.ClockingTime, ZkTimeBadgeNumber = rawZkTimeDataObj.StaffId, ZkTimeSiteNumber = rawZkTimeDataObj.SiteId, ZkTimeSiteName = rawZkTimeDataObj.SiteName, ZkTimeUserName = rawZkTimeDataObj.StaffName, ShiftId = rawZkTimeDataObj.ShiftId }).ToList(); PersistUnprocessedZkTimeData(unprocessedDataEntityList); }
public void Init(bool firstRun, DateTime mostRecentClockingTime) { if (!firstRun) { _firstRun = false; } var dataToImport = new List <ZkTimeDataToImportModel>(); var maxDate = DateTime.Now; if (!_firstRun) { if (DateTime.Equals(_lastClockingTimeValue, DateTime.MinValue)) { if (!DateTime.Equals(mostRecentClockingTime, DateTime.MinValue)) { maxDate = mostRecentClockingTime; } } else { maxDate = _lastClockingTimeValue; } } else { maxDate = maxDate.AddMonths(_minusNMonths); } _firstRun = false; // clocking in/out terminal IDs as set in the ZKTimeDB //var machineNumbers = new List<int> { 12, 22, 32, 42, 62, 72, 73, 82 }; var machineNumbers = new List <int> { 72, 73, 82 }; // Baldock only var zkUserRecords = _zktctx.GetTable <ZkUser>(); var machineRecords = _zktctx.GetTable <Machine>(); var clockingRecords = _zktctx.GetTable <Clocking>(); // leave to last possible line to get closest to now var minDate = DateTime.Now; try { var q = from c in clockingRecords join u in zkUserRecords on c.UserId equals u.UserId join m in machineRecords on c.MachineNumber equals m.MachineNumber where machineNumbers.Contains(m.MachineNumber) && c.ClockingTime > maxDate && c.ClockingTime <= minDate select new ZkTimeDataToImportModel { SiteId = m.MachineNumber, SiteName = m.MachineAlias, StaffId = int.Parse(u.BadgeNumber), StaffName = u.Name, ClockingTime = c.ClockingTime }; dataToImport.AddRange(q); dataToImport = dataToImport.OrderBy(zkt => zkt.ClockingTime) .ToList(); _lastClockingTimeValue = dataToImport.Select(zkt => zkt.ClockingTime) .LastOrDefault(); if (dataToImport.Count > 0) { var dataToReturnForImport = new ZkTimeDataEventArgs { UserClockingData = dataToImport }; ZkTimeDataReadyEvent(null, dataToReturnForImport); } else { NoNewZkTimeDataEvent(null, null); } } catch (SqlException ex) { throw new NotImplementedException(); } catch (Exception ex) { throw new NotImplementedException(); } }