public async Task <List <TClass> > AddRangeAsync(List <TClass> listEntities, bool cleanData) { if (cleanData) { var all = await GetAllAsync(); foreach (var getEntity in all) { if (getEntity.Photos != null && getEntity.Photos.Any()) { foreach (var photo in getEntity.Photos) { AzureBlobHelper.DeletePhoto(photo.FileName, TypeTable.Certificates); DataContext.Entry(photo).State = EntityState.Deleted; } } if (getEntity.Contacts != null && getEntity.Contacts.Any()) { foreach (var contact in getEntity.Contacts) { DataContext.Entry(contact).State = EntityState.Deleted; } } if (getEntity.Locations != null && getEntity.Locations.Any()) { foreach (var location in getEntity.Locations) { DataContext.Entry(location).State = EntityState.Deleted; } } // DataContext.Entry(getEntity).Collection("Locations").Load(); // DataContext.Entry(getEntity).Collection("Photos").Load(); // DataContext.Entry(getEntity).Collection("Contacts").Load(); DataContext.Entry(getEntity).State = EntityState.Deleted; } } DataContext.SaveChanges(); return(await base.AddRangeAsync(listEntities)); }
/// <summary> /// Identifies person from temporary image taken from App /// </summary> /// <returns>Name of identified person</returns> public async Task <string> Identify(string name) { var azureBlobHelper = new AzureBlobHelper(); string takenImageUri = null; takenImageUri = azureBlobHelper.GetImageUri(name); if (takenImageUri == null) { throw new ManagerException(RecognitionErrorMessages.WrongUriError); } var memoryStream = new MemoryStream(); memoryStream = RecUtil.GetStreamFromUri(takenImageUri); var faces = await _faceServiceClient.DetectAsync(memoryStream); if (faces.Length == 0 || faces == null) { throw new ManagerException(RecognitionErrorMessages.NoFacesFoundError); } var faceIds = faces.Select(face => face.FaceId).ToArray(); var results = await _faceServiceClient.IdentifyAsync(_groupId, faceIds); if (results.Length == 0 || results == null || results[0].Candidates.Length == 0 || results[0].Candidates[0] == null) { throw new ManagerException(RecognitionErrorMessages.NoOneIdentifiedError); } var candidateId = results[0].Candidates[0].PersonId; var person = await _faceServiceClient.GetPersonAsync(_groupId, candidateId); azureBlobHelper.DeletePhoto(name); return(person.Name); }