Facebook
From Small Moth, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 192
  1.   public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
  2.         {
  3.             StringBuilder stBuilder = new StringBuilder();
  4.  
  5.             var xmlSeserializer = new XmlSerializer(typeof(ImportPerformerDto[]),
  6.                                                           new XmlRootAttribute("Performers"));
  7.             var performersDto = (ImportPerformerDto[])xmlSeserializer.Deserialize(new StringReader(xmlString));
  8.  
  9.             var performerList = new List<Performer>();
  10.             foreach (var performerDto in performersDto)
  11.             {
  12.                 if (!IsValid(performerDto))
  13.                 {
  14.                     stBuilder.AppendLine(ErrorMessage);
  15.                     continue;
  16.                 }
  17.  
  18.                 bool havesongs = true;
  19.                 var songs = new List<Song>();
  20.                 foreach (var songDto in performerDto.MappingTable)
  21.                 {
  22.                     Song song = context.Songs.Where(s => s.Id == songDto.DtoId).FirstOrDefault();
  23.                     if (song == null)
  24.                     {
  25.                         songs.Clear();
  26.                         havesongs = false;
  27.                         break;
  28.                     }
  29.                     else
  30.                     {
  31.                         songs.Add(song);
  32.                     }
  33.                 }
  34.  
  35.                 if (!havesongs)
  36.                 {
  37.                     stBuilder.AppendLine(ErrorMessage);
  38.                     continue;
  39.                 }
  40.  
  41.                 var performer = new Performer
  42.                 {
  43.                     FirstName = performerDto.FirstName,
  44.                     LastName = performerDto.LastName,
  45.                     Age = performerDto.Age,
  46.                     NetWorth = performerDto.NetWorth
  47.                 };
  48.                  context.Performers.Add(performer);
  49.  
  50.                 foreach (var song in songs)
  51.                 {
  52.                     var songPerformer = new SongPerformer
  53.                     {
  54.                         Song = song,
  55.                         Performer = performer
  56.                     };
  57.                     context.SongsPerformers.Add(songPerformer);
  58.                 }
  59.                 // Imported { performer first name} ({ songs count}songs)
  60.                 string message = String.Format(SuccessfullyImportedPerformer, performer.FirstName, songs.Count);
  61.  
  62.                 stBuilder.AppendLine(message);
  63.  
  64.             }
  65.             string result = stBuilder.ToString().TrimEnd();
  66.             context.SaveChanges();
  67.  
  68.             return result;
  69.         }