public static ChildDto ToChildDto(this ChildRow childRow) { return(new ChildDto() { ChildId = childRow.ChildId, ChildFirstName = childRow.FirstName, ChildLastName = childRow.LastName, Goodness = childRow.Goodness }); }
public static async Task <ChildRow> GetChildByIdAsync(this CloudTable table, string childId) { ChildRow child = null; TableQuery <ChildRow> rangeQuery = new TableQuery <ChildRow>().Where( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Children"), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, childId))); var token = default(TableContinuationToken); var query = await table.ExecuteQuerySegmentedAsync(rangeQuery, token); child = query.FirstOrDefault(); return(child); }
public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "post", Route = "EvaluateChild")] HttpRequest req, [Table(TableNames.ChildrenTable, "Children", Connection = "StorageAccount")] CloudTable childTable, ILogger log) { log.LogDebug($"[START FUNCTION] --> {Constants.RetrieveChildActivityFunction}"); string jsonContent = await new StreamReader(req.Body).ReadToEndAsync(); ChildEvaluationDto child = null; try { child = JsonConvert.DeserializeObject <ChildEvaluationDto>(jsonContent); log.LogInformation($"{Constants.RetrieveChildActivityFunction} for child {child}"); var childRow = await childTable.GetChildByIdAsync(child.ChildId); if (childRow == null) { log.LogDebug($"{Constants.RetrieveChildActivityFunction} child {child} not found"); childRow = new ChildRow(child.ChildId); childRow.FirstName = child.ChildFirstName; childRow.LastName = child.ChildLastName; } childRow.Goodness = child.Goodness; await childTable.InsertOrReplaceAsync(childRow); } catch (Exception ex) { log.LogError("Error during child evaluation operation", ex); return(new BadRequestObjectResult("Error during child evaluation operation")); } return(new OkResult()); }
public static async Task <ChildDto> RetrieveChild([ActivityTrigger] LetterDto letter, [Table(TableNames.ChildrenTable, "Children", Connection = "StorageAccount")] CloudTable childTable, ILogger log) { log.LogInformation($"[START ACTIVITY] --> {Constants.RetrieveChildActivityFunction} for childId={letter.ChildId}"); ChildDto child = null; try { var childRow = await childTable.GetChildByIdAsync(letter.ChildId); if (childRow == null) { childRow = new ChildRow(letter.ChildId); childRow.FirstName = letter.ChildFirstName; childRow.LastName = letter.ChildLastName; childRow.Goodness = 10; if (!await childTable.InsertAsync(childRow)) { childRow = null; } } if (childRow != null) { child = childRow.ToChildDto(); child.CurrentLetter = letter; } } catch (Exception ex) { log.LogError(ex, $"Error during retriving child"); return(null); } return(child); }
public void ExampleJoining() { var numbersAlpha = new int[] { 1, 2, 3 }; var numbersBravo = new int[] { 2, 4 }; var numbersExcludingBravo = numbersAlpha.Except(numbersBravo); var products = new Product[] { new Product() { Id = 1, Name = "One" }, new Product() { Id = 2, Name = "Two" } }; var productsDiscontinued = new Product[] { new Product() { Id = 2, Name = "Two" } }; var productsAvailable = products.Except(productsDiscontinued); var numbersInBothSets = numbersAlpha.Intersect(numbersBravo); var infos = new PlayerInfo[] { new PlayerInfo() { PlayerId = 1, Name = "Name1", CreatedDate = DateTime.Parse("01/01/2001") }, new PlayerInfo() { PlayerId = 2, Name = "Name2", CreatedDate = DateTime.Parse("02/02/2002") }, new PlayerInfo() { PlayerId = 7, Name = "Name7", CreatedDate = DateTime.Parse("07/07/2007") } }; var metadatas = new PlayerMetadata[] { new PlayerMetadata() { PlayerId = 1, Tags = new string[] { "strong slow" } }, new PlayerMetadata() { PlayerId = 2, Tags = new string[] { "weak fast" } }, new PlayerMetadata() { PlayerId = 8, Tags = new string[] { "tall smart" } } }; var joinedPlayers = infos.Join(metadatas, i => i.PlayerId, m => m.PlayerId, (i, m) => new Player() { Id = i.PlayerId, Name = i.Name, CreatedDate = i.CreatedDate, Tags = m.Tags }); var parents = new ParentRow[] { new ParentRow() { ParentId = 1, ParentName = "Parent1" }, new ParentRow() { ParentId = 2, ParentName = "Parent2" } }; var children = new ChildRow[] { new ChildRow() { ChildId = 1, ParentId = 1, ChildName = "Child1" }, new ChildRow() { ChildId = 2, ParentId = 1, ChildName = "Child2" }, new ChildRow() { ChildId = 3, ParentId = 2, ChildName = "Child3" }, new ChildRow() { ChildId = 4, ParentId = 2, ChildName = "Child4" } }; var joinedFamily = parents.Join(children, p => p.ParentId, c => c.ParentId, (p, c) => new { Parent = p, Child = c }); var joinedFamilyMessageBuilder = new StringBuilder(); foreach (var relationship in joinedFamily) { var line = relationship.Parent.ParentName + ":" + relationship.Child.ChildName; joinedFamilyMessageBuilder.AppendLine(line); } var joinedFamilyMessage = joinedFamilyMessageBuilder.ToString(); var groupJoinedFamily = parents.GroupJoin(children, p => p.ParentId, c => c.ParentId, (p, c) => new { Parent = p, Children = c }); var groupJoinedFamilyMessageBuilder = new StringBuilder(); foreach (var parent in groupJoinedFamily) { var childrensNames = String.Join(",", parent.Children.Select(c => c.ChildName)); var line = parent.Parent.ParentName + ":" + childrensNames; groupJoinedFamilyMessageBuilder.AppendLine(line); } var groupJoinedFamilyMessage = groupJoinedFamilyMessageBuilder.ToString(); var numbers = new int[] { 1, 2, 3, 4, 5 }; var groups = numbers.GroupBy(n => n % 2 == 0); var groupMessageBuilder = new StringBuilder(); foreach (var group in groups) { var line = (group.Key ? "Even" : "Odd") + ":" + String.Join(",", group); groupMessageBuilder.AppendLine(line); } var groupMessage = groupMessageBuilder.ToString(); var animals = new Animal[] { new Animal() { Id = 1, Species = "Dog", Age = 7 }, new Animal() { Id = 2, Species = "Cat", Age = 3 }, new Animal() { Id = 3, Species = "Cat", Age = 6 }, new Animal() { Id = 4, Species = "Cat", Age = 3 }, new Animal() { Id = 5, Species = "Dog", Age = 6 } }; var animalSummaryBuilder = new StringBuilder(); var animalsByAge = animals.GroupBy(a => a.Age); foreach (var ageGroup in animalsByAge) { animalSummaryBuilder.AppendLine($"Animals Age {ageGroup.Key}"); foreach (var animal in ageGroup) { var line = $"\tId:{animal.Id}:Species:{animal.Species}"; animalSummaryBuilder.AppendLine(line); } } var animalsBySpecies = animals.GroupBy(a => a.Species); foreach (var speciesGroup in animalsBySpecies) { animalSummaryBuilder.AppendLine($"{speciesGroup.Key}s"); foreach (var animal in speciesGroup) { var line = $"\tId:{animal.Id}:Age:{animal.Age}"; animalSummaryBuilder.AppendLine(line); } } var animalSummary = animalSummaryBuilder.ToString(); }