private void AddRecord(DataProvider dataProvider, EmployeeZonesDataSet ds, RubezhDAL.DataClasses.PassJournal record, EmployeeZonesReportFilter filter, bool isEnter, Dictionary<Guid, string> zoneMap) { if (record.EmployeeUID == null) return; var dataRow = ds.Data.NewDataRow(); var employee = dataProvider.GetEmployee(record.EmployeeUID.Value); dataRow.Employee = employee.Name; dataRow.Orgnisation = employee.Organisation; dataRow.Department = employee.Department; dataRow.Position = employee.Position; dataRow.Zone = zoneMap.ContainsKey(record.ZoneUID) ? zoneMap[record.ZoneUID] : null; dataRow.EnterDateTime = record.EnterTime; if (record.ExitTime.HasValue) { dataRow.ExitDateTime = record.ExitTime.Value; dataRow.Period = dataRow.ExitDateTime - dataRow.EnterDateTime; } else { dataRow.ExitDateTime = filter.ReportDateTime; dataRow.Period = filter.ReportDateTime - dataRow.EnterDateTime; } if (!filter.IsEmployee) { var escortUID = employee.Item.EscortUID; if (escortUID.HasValue) { var escort = dataProvider.GetEmployee(escortUID.Value); dataRow.Escort = escort.Name; } } ds.Data.Rows.Add(dataRow); }
public static OperationResult<bool> AddOrEditCard(GKControllerCardSchedule controllerCardSchedule, SKDCard card, string employeeName, int gkCardNo = 0, bool isNew = true, RubezhDAL.DataClasses.DbService dbService = null) { if (gkCardNo == 0) { if (dbService == null) { using (var skdDatabaseService = new RubezhDAL.DataClasses.DbService()) { gkCardNo = skdDatabaseService.GKCardTranslator.GetFreeGKNo(controllerCardSchedule.ControllerDevice.GetGKIpAddress(), card.Number, out isNew); } } else gkCardNo = dbService.GKCardTranslator.GetFreeGKNo(controllerCardSchedule.ControllerDevice.GetGKIpAddress(), card.Number, out isNew); } var user = new GKUser { GkNo = (ushort)gkCardNo, ExpirationDate = card.EndDate, Fio = employeeName, GkLevel = (byte)card.GKLevel, GkLevelSchedule = (byte)card.GKLevelSchedule, Password = card.Number, UserType = card.GKCardType }; var result = AddOrEditUser(user, controllerCardSchedule.ControllerDevice, isNew, controllerCardSchedule.CardSchedules); if (result.HasError) return result; using (var skdDatabaseService = new RubezhDAL.DataClasses.DbService()) { skdDatabaseService.GKCardTranslator.AddOrEdit(controllerCardSchedule.ControllerDevice.GetGKIpAddress(), gkCardNo, card.Number, employeeName); } return new OperationResult<bool>(true); }
public static OperationResult<bool> RemoveCard(GKDevice device, SKDCard card, RubezhDAL.DataClasses.DbService dbService = null) { var no = 1; if (dbService == null) { using (var skdDatabaseService = new RubezhDAL.DataClasses.DbService()) { no = skdDatabaseService.GKCardTranslator.GetGKNoByCardNo(device.GetGKIpAddress(), card.Number); } } else no = dbService.GKCardTranslator.GetGKNoByCardNo(device.GetGKIpAddress(), card.Number); if (no == -1) { return OperationResult<bool>.FromError("По номеру карты не найдена порядковая запись"); } var bytes = new List<byte>(); bytes.Add(0); bytes.AddRange(BytesHelper.ShortToBytes((ushort)(no))); bytes.Add(0); bytes.Add(1); var nameBytes = BytesHelper.StringDescriptionToBytes("-"); bytes.AddRange(nameBytes); bytes.AddRange(BytesHelper.IntToBytes(-1)); bytes.Add(0); bytes.Add(0); for (int i = 0; i < 256 - 42; i++) { bytes.Add(0); } var sendResult = SendManager.Send(device, (ushort)(bytes.Count), 26, 0, bytes); if (sendResult.HasError) { return OperationResult<bool>.FromError(sendResult.Error); } using (var skdDatabaseService = new RubezhDAL.DataClasses.DbService()) { skdDatabaseService.GKCardTranslator.Remove(device.GetGKIpAddress(), no, card.Number); } return new OperationResult<bool>(true); }
public TimeTrackTranslator(RubezhDAL.DataClasses.DbService databaseService) { Context = databaseService.Context; DbService = databaseService; }
IEnumerable<string> DeleteGKCard(Guid clientUID, SKDCard card, List<CardDoor> accessTemplateDoors, RubezhDAL.DataClasses.DbService databaseService) { var result = new List<string>(); var controllerCardSchedules = GKSKDHelper.GetGKControllerCardSchedules(card, accessTemplateDoors); foreach (var controllerCardSchedule in controllerCardSchedules) { var removeResult = GKSKDHelper.RemoveCard(controllerCardSchedule.ControllerDevice, card); if (removeResult.HasError) { result.Add("Не удалось удалить карту из устройства " + controllerCardSchedule.ControllerDevice.PresentationName); var pendingResult = databaseService.CardTranslator.DeletePending(card.UID, controllerCardSchedule.ControllerDevice.UID); if (pendingResult.HasError) result.Add(pendingResult.Error); } } return result; }
IEnumerable<string> EditGKCard(Guid clientUID, SKDCard oldCard, AccessTemplate oldAccessTemplate, SKDCard newCard, AccessTemplate newAccessTemplate, RubezhDAL.DataClasses.DbService databaseService) { var result = new List<string>(); var employeeOperationResult = databaseService.EmployeeTranslator.GetSingle(newCard.EmployeeUID); if (!employeeOperationResult.HasError) { var cardDoors = oldAccessTemplate != null ? oldAccessTemplate.CardDoors : new List<CardDoor>(); var oldControllerCardSchedules = GKSKDHelper.GetGKControllerCardSchedules(oldCard, cardDoors); cardDoors = newAccessTemplate != null ? newAccessTemplate.CardDoors : new List<CardDoor>(); var newControllerCardSchedules = GKSKDHelper.GetGKControllerCardSchedules(newCard, cardDoors); foreach (var controllerCardSchedule in oldControllerCardSchedules) { if (!newControllerCardSchedules.Any(x => x.ControllerDevice.UID == controllerCardSchedule.ControllerDevice.UID)) { var removeResult = GKSKDHelper.RemoveCard(controllerCardSchedule.ControllerDevice, newCard); if (removeResult.HasError) { result.Add("Не удалось удалить карту из устройства " + controllerCardSchedule.ControllerDevice.PresentationName); var pendingResult = databaseService.CardTranslator.DeletePending(newCard.UID, controllerCardSchedule.ControllerDevice.UID); if (pendingResult.HasError) result.Add(pendingResult.Error); } } } foreach (var controllerCardSchedule in newControllerCardSchedules) { var addResult = GKSKDHelper.AddOrEditCard(controllerCardSchedule, newCard, employeeOperationResult.Result.FIO); if (addResult.HasError) { result.Add("Не удалось добавить или редактировать карту в устройстве " + controllerCardSchedule.ControllerDevice.PresentationName); var pendingResult = databaseService.CardTranslator.AddPending(newCard.UID, controllerCardSchedule.ControllerDevice.UID); if (pendingResult.HasError) result.Add(pendingResult.Error); } } } return result; }
IEnumerable<string> AddGKCard(Guid clientUID, SKDCard card, AccessTemplate accessTemplate, RubezhDAL.DataClasses.DbService databaseService) { var employeeOperationResult = databaseService.EmployeeTranslator.GetSingle(card.EmployeeUID); if (!employeeOperationResult.HasError) { var accessTemplateCardDoors = accessTemplate != null ? accessTemplate.CardDoors : new List<CardDoor>(); var controllerCardSchedules = GKSKDHelper.GetGKControllerCardSchedules(card, accessTemplateCardDoors); foreach (var controllerCardSchedule in controllerCardSchedules) { var addResult = GKSKDHelper.AddOrEditCard(controllerCardSchedule, card, employeeOperationResult.Result.FIO); if (addResult.HasError) { yield return "Не удалось добавить карту в устройство " + controllerCardSchedule.ControllerDevice.PresentationName; var pendingResult = databaseService.CardTranslator.AddPending(card.UID, controllerCardSchedule.ControllerDevice.UID); if (pendingResult.HasError) yield return pendingResult.Error; } } } }