public BaseResponse SaveFingerprintForNode(int nodeId, Fingerprint fingerprint) { var result = new BaseResponse(); ExecuteMaps(entities => FingerprintService.SaveFingerprintForNode(entities, nodeId, fingerprint), result); return result; }
public static void SaveFingerprintForNode(MapsEntities entities, int nodeId, Fingerprint fingerprint) { if (fingerprint == null) throw new ServiceException(ResponseError.FingeprintIsNotDefined); if (fingerprint.AccessPointScans == null || !fingerprint.AccessPointScans.Any()) return; Nodes node = entities.Nodes.Find(nodeId); if (node == null) throw new ServiceException(ResponseError.NodeIdDoesNotExist); // Fingerprint in DB einfügen Fingerprints fingerprints = entities.Fingerprints.Add(new Fingerprints { NodeId = node.Id }); entities.SaveChanges(); foreach (AccessPointScan apScan in fingerprint.AccessPointScans) { // Fehlenden AccessPoint ggf. anlegen AccessPoints ap = entities.AccessPoints.FirstOrDefault(x => x.MAC == apScan.AccessPoint.MAC); if (ap == null) { ap = entities.AccessPoints.Add(new AccessPoints { MAC = apScan.AccessPoint.MAC }); entities.SaveChanges(); } // Einzelmessung speichern entities.AccessPointScans.Add(new AccessPointScans { AccessPointId = ap.Id, RecievedSignalStrength = apScan.ReceivedSignalStrength, FingerprintId = fingerprints.Id }); } entities.SaveChanges(); StudMapCache.RemoveFingerprint(node.Floors.MapId); }