public BaseResponse SaveFingerprintForNode(int nodeId, Fingerprint fingerprint)
        {
            var result = new BaseResponse();

            ExecuteMaps(entities => FingerprintService.SaveFingerprintForNode(entities, nodeId, fingerprint), result);

            return result;
        }
Example #2
0
        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);
        }