stefanMinch3v

delegates array in factory

Sep 27th, 2020
826
150 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // client factory
  2. public IClientFactory WithPets(IList<Action<PetFactory>> pets)
  3.         {
  4.             this.pets = new List<Pet>();
  5.             var petFactory = new PetFactory();
  6.  
  7.             foreach (var pet in pets)
  8.             {
  9.                 pet(petFactory); // here it breaks
  10.                 this.pets.Add(petFactory.Build());
  11.             }
  12.  
  13.             return this;
  14.         }
  15.  
  16. // client repository
  17. var dbClient = (await base
  18.                 .All()
  19.                 .AsNoTracking()
  20.                 .FirstOrDefaultAsync(p => p.UserId == id, cancellationToken));
  21.  
  22.             if (dbClient is null)
  23.             {
  24.                 return null!;
  25.             }
  26.  
  27.             var clientPets = await base.Data.Set<Pet>()
  28.                 .Where(p => p.UserId == id)
  29.                 .ToListAsync(cancellationToken);
  30.  
  31.             var petList = new List<Action<PetFactory>>();
  32.  
  33.             foreach (var dbPet in clientPets)
  34.             {
  35.                 Action<PetFactory> actionPet = pet => pet
  36.                     .WithAge(dbPet.Age)
  37.                     .WithBreed(dbPet.Breed)
  38.                     .WithColor(Enumeration.FromValue<Domain.Common.SharedKernel.Color>((int)dbPet.Color))
  39.                     .WithColorEye(Enumeration.FromValue<Domain.Common.SharedKernel.Color>((int)dbPet.EyeColor))
  40.                     .WithFoundAt(dbPet.FoundAt)
  41.                     .WithIsCastrated(dbPet.IsCastrated)
  42.                     .WithIsAdopted(dbPet.IsAdopted)
  43.                     .WithName(dbPet.Name)
  44.                     .WithPetType(Enumeration.FromValue<Domain.Common.SharedKernel.PetType>((int)dbPet.PetType))
  45.                     .Build();
  46.  
  47.                 petList.Add(actionPet);
  48.             }
  49.  
  50.             var domainClient = this.clientFactory
  51.                 .WithAddress(dbClient.Address!)
  52.                 .WithName(dbClient.Name)
  53.                 .WithPhoneNumber(dbClient.PhoneNumber!)
  54.                 .WithUserId(dbClient.UserId)
  55.                 .WithPets(petList)
  56.                 .Build();
  57.  
  58.             return domainClient;
RAW Paste Data