public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer     = new XmlSerializer(typeof(List <PerformerImputDTO>), new XmlRootAttribute("Performers"));
            var performersDTOs = (List <PerformerImputDTO>)serializer.Deserialize(new StringReader(xmlString));

            var sb         = new StringBuilder();
            var performers = new List <Performer>();

            var validSongs = context.Songs.Select(s => s.Id).ToList();

            foreach (var dto in performersDTOs)
            {
                var isValid = IsValid(dto);

                if (!isValid)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer()
                {
                    FirstName = dto.FirstName,
                    LastName  = dto.LastName,
                    Age       = dto.Age,
                    NetWorth  = dto.NetWorth
                };

                var isOkToImport = true;
                foreach (var song in dto.PerformerSongs)
                {
                    if (!validSongs.Contains(song.Id))
                    {
                        sb.AppendLine(ErrorMessage);
                        isOkToImport = false;
                        break;
                    }

                    var songPerformer = new SongPerformer()
                    {
                        SongId = song.Id
                    };


                    performer.PerformerSongs.Add(songPerformer);
                }

                if (isOkToImport)
                {
                    var result = String.Format(SuccessfullyImportedPerformer, performer.FirstName, performer.PerformerSongs.Count());
                    sb.AppendLine(result);
                    performers.Add(performer);
                }
            }

            context.Performers.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #2
0
        private static void AddSongPerformers(MusicHubDbContext context, Performer performer, SongPerformerDTO[] performersSongs)
        {
            var validSongPerformers = new List <SongPerformer>();

            foreach (var performerSong in performersSongs)
            {
                if (IsSongValid(context, performerSong.SongId))
                {
                    SongPerformer songPerformer = new SongPerformer
                    {
                        SongId    = performerSong.SongId,
                        Performer = performer
                    };

                    validSongPerformers.Add(songPerformer);
                }
                else
                {
                    context.Performers.Remove(performer);
                    context.SaveChanges();
                    return;
                }
            }

            context.SongsPerformers.AddRange(validSongPerformers);

            context.SaveChanges();
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer = new XmlSerializer(typeof(List <ImportSongPerformerDto>),
                                               new XmlRootAttribute("Performers"));

            var reader = new StringReader(xmlString);

            var songPerformersDto = (List <ImportSongPerformerDto>)serializer.Deserialize(reader);

            var performers = new List <Performer>();

            var songPerformers = new List <SongPerformer>();

            var sb = new StringBuilder();


            foreach (var songPerformerDto in songPerformersDto)
            {
                var performer = Mapper.Map <Performer>(songPerformerDto);

                var isAllSongsValid = songPerformerDto.PerformersSongs
                                      .All(x => context.Songs.Any(song => song.Id == x.Id));

                if (!IsValid(songPerformerDto) || !isAllSongsValid)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                foreach (var songDtoId in songPerformerDto.PerformersSongs)
                {
                    var entity = songPerformers
                                 .Count(songPerformer => songPerformer.Performer == performer &&
                                        songPerformer.SongId == songDtoId.Id);

                    if (context.Songs.Find(songDtoId.Id) != null && entity == 0)
                    {
                        var songPerformer = new SongPerformer
                        {
                            Performer = performer,
                            SongId    = songDtoId.Id
                        };

                        songPerformers.Add(songPerformer);
                    }
                }
                performers.Add(performer);

                sb.AppendLine(String.Format(SuccessfullyImportedPerformer, performer.FirstName, songPerformerDto.PerformersSongs.Count));
            }

            context.Performers.AddRange(performers);

            context.SongPerformers.AddRange(songPerformers);

            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var attr       = new XmlRootAttribute("Performers");
            var serializer = new XmlSerializer(typeof(List <PerformerDto>), attr);

            var validSongIds = context
                               .Songs
                               .Select(s => s.Id)
                               .ToList();

            StringBuilder sb = new StringBuilder();
            var           validPerformers = new List <Performer>();

            using (StringReader reader = new StringReader(xmlString))
            {
                var performersDto = (List <PerformerDto>)serializer.Deserialize(reader);

                foreach (var performerDto in performersDto)
                {
                    if (!IsValid(performerDto) || performerDto.PerformersSongs.Any(s => !validSongIds.Contains(s.Id)))
                    {
                        sb.AppendLine(ErrorMessage);
                        continue;
                    }

                    var performer = new Performer
                    {
                        FirstName = performerDto.FirstName,
                        LastName  = performerDto.LastName,
                        Age       = performerDto.Age,
                        NetWorth  = performerDto.NetWorth
                    };

                    var performerSongs = new List <SongPerformer>();

                    foreach (var song in performerDto.PerformersSongs)
                    {
                        var performerSongToAdd = new SongPerformer
                        {
                            SongId    = song.Id,
                            Performer = performer
                        };

                        performerSongs.Add(performerSongToAdd);
                    }

                    performer.PerformerSongs = performerSongs;
                    validPerformers.Add(performer);

                    sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, performerSongs.Count));
                }
            }

            context.Performers.AddRange(validPerformers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #5
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var performerDtos = new List <ImportPerformerDto>();

            var sb         = new StringBuilder();
            var serializer = new XmlSerializer(performerDtos.GetType(), new XmlRootAttribute("Performers"));

            performerDtos = (List <ImportPerformerDto>)serializer.Deserialize(new StringReader(xmlString));

            foreach (var performerDto in performerDtos)
            {
                var isValidPerformerDto = true;

                foreach (var songDto in performerDto.PerformersSongs)
                {
                    if (context.Songs.All(s => s.Id != songDto.Id))
                    {
                        isValidPerformerDto = false;
                        break;
                    }
                }

                if (!isValidPerformerDto)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = Mapper.Map <Performer>(performerDto);

                if (!IsValid(performer))
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                context.Performers.Add(performer);
                sb.AppendLine(String.Format(SuccessfullyImportedPerformer, performer.FirstName,
                                            performerDto.PerformersSongs.Count));

                foreach (var song in performerDto.PerformersSongs)
                {
                    var sp = new SongPerformer()
                    {
                        SongId      = song.Id,
                        Song        = context.Songs.Find(song.Id),
                        Performer   = performer,
                        PerformerId = performer.Id
                    };

                    context.SongsPerformers.Add(sp);
                }
            }

            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var importedPerformers = ImportXml <PerformerSongImportDto>(xmlString, "Performers");
            var validSongIds       = context.Songs.Select(s => s.Id).ToList();


            var           performersToAdd = new List <Performer>();
            StringBuilder sb = new StringBuilder();

            var songBondsToInsert = new List <SongPerformer>();

            foreach (var per in importedPerformers.ToList())
            {
                bool isValidObj       = IsValid(per);
                bool validCollections = per.PerformersSongs.All(p => validSongIds.Contains(p.Id));

                if (isValidObj is false || validCollections is false)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }



                var performer = new Performer()
                {
                    Age       = per.Age,
                    FirstName = per.FirstName,
                    LastName  = per.LastName,
                    NetWorth  = per.NetWorth,
                };


                foreach (var s in per.PerformersSongs)
                {
                    var current = new SongPerformer()
                    {
                        Performer = performer,
                        SongId    = s.Id
                    };
                    songBondsToInsert.Add(current);
                    performer.PerformerSongs.Add(current);
                }

                sb.AppendLine(
                    string.Format(SuccessfullyImportedPerformer,
                                  performer.FirstName,
                                  performer.PerformerSongs.Count));
            }

            //not sure if i should add the mapping table or this way it is enough?
            context.Performers.AddRange(performersToAdd);
            context.SongsPerformers.AddRange(songBondsToInsert);
            context.SaveChanges();
            var x = sb.ToString().TrimEnd();

            return(x);
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer      = new XmlSerializer(typeof(ImportPerformerModel[]), new XmlRootAttribute("Performers"));
            var performerModels = (ImportPerformerModel[])serializer.Deserialize(new StringReader(xmlString));
            var sb = new StringBuilder();

            foreach (var performerModel in performerModels)
            {
                if (!IsValid(performerModel))
                {
                    sb.AppendLine("Invalid data");
                    continue;
                }

                var performer = new Performer()
                {
                    FirstName = performerModel.FirstName,
                    LastName  = performerModel.LastName,
                    Age       = performerModel.Age,
                    NetWorth  = performerModel.NetWorth
                };

                bool isSongValid = true;

                foreach (var songModel in performerModel.PerformersSongs)
                {
                    var targetSong = context.Songs.FirstOrDefault(x => x.Id == songModel.Id);

                    if (targetSong == null)
                    {
                        isSongValid = false;
                        break;
                    }

                    var performerSong = new SongPerformer()
                    {
                        Performer = performer,
                        SongId    = targetSong.Id
                    };

                    performer.PerformerSongs.Add(performerSong);
                }

                if (!isSongValid)
                {
                    sb.AppendLine("Invalid data");
                    continue;
                }

                context.Performers.Add(performer);
                sb.AppendLine($"Imported {performer.FirstName} ({performer.PerformerSongs.Count()} songs)");
            }

            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #8
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var root = "Performers";
            var data = XmlConverter.Deserializer <ImportSongPerformerDTO>(xmlString, root);

            StringBuilder sb = new StringBuilder();

            foreach (var item in data)
            {
                if (!IsValid(item))
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer
                {
                    FirstName = item.FirstName,
                    LastName  = item.LastName,
                    Age       = item.Age,
                    NetWorth  = item.NetWorth
                };

                bool isValidPerformer = true;
                foreach (var performerSong in item.PerformersSongs)
                {
                    if (!IsValid(performerSong) || !context.Songs.Any(s => s.Id == performerSong.Id))
                    {
                        isValidPerformer = false;
                        sb.AppendLine(ErrorMessage);
                        break;
                    }

                    var ps = new SongPerformer
                    {
                        PerformerId = performer.Id,
                        SongId      = performerSong.Id
                    };

                    performer.PerformerSongs.Add(ps);
                }

                if (!isValidPerformer)
                {
                    continue;
                }

                context.Performers.Add(performer);
                sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, performer.PerformerSongs.Count));
            }

            context.SaveChanges();
            return(sb.ToString());
        }
Example #9
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var sb = new StringBuilder();
            var songPerformersRootName = "Performers";
            var songPerformersDtos     = XmlConverter.Deserializer <ImportSongsPerformersDTO>(xmlString, songPerformersRootName);

            var realPerformers = new List <Performer>();

            foreach (var songPerformerDto in songPerformersDtos)
            {
                var areAllSongsValid = true;
                foreach (var songId in songPerformerDto.Songs)
                {
                    if (context.Songs.All(x => x.Id != songId.Id))
                    {
                        areAllSongsValid = false;
                        break;
                    }
                }
                if (!IsValid(songPerformerDto) || !areAllSongsValid)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }
                var newPerformer = new Performer
                {
                    FirstName = songPerformerDto.FirstName,
                    LastName  = songPerformerDto.LastName,
                    Age       = songPerformerDto.Age,
                    NetWorth  = songPerformerDto.NetWorth
                };

                foreach (var songId in songPerformerDto.Songs)
                {
                    var existedSong = context.Songs.FirstOrDefault(x => x.Id == songId.Id);

                    var songPerformer = new SongPerformer
                    {
                        Performer = newPerformer,
                        Song      = existedSong
                    };

                    newPerformer.PerformerSongs.Add(songPerformer);
                }

                realPerformers.Add(newPerformer);

                sb.AppendLine(string.Format(SuccessfullyImportedPerformer, newPerformer.FirstName, newPerformer.PerformerSongs.Count));
            }
            context.Performers.AddRange(realPerformers);
            context.SaveChanges();
            return(sb.ToString().TrimEnd());
        }
Example #10
0
            public async Task <Unit> Handle(Command request,
                                            CancellationToken cancellationToken)
            {
                var songSet = new SongSet[]
                {
                    new SongSet {
                        SongId = request.Id,
                        SetId  = request.SongSet[0].Set.Id,
                    }
                };

                var songPerformer = new SongPerformer[]
                {
                    new SongPerformer {
                        SongId      = request.Id,
                        PerformerId = request.SongPerformer[0].Performer.Id,
                    }
                };

                var song = new Song
                {
                    Id            = request.Id,
                    Name          = request.Name,
                    Genre         = request.Genre,
                    Text          = request.Text,
                    SongSet       = songSet,
                    SongPerformer = songPerformer,
                };

                context.Songs.Add(song);

                //var user = await context.Users.SingleOrDefaultAsync(x => x.UserName == userAccessor.GetCurrentUsername());

                //var set = await context.Sets.SingleOrDefaultAsync(x => x.Id.Equals("271515c0-45e8-4a74-8fa5-01b4bd85fc3a"));


                /*var songSet = new SongSet
                 * {
                 *  Set = request.SongSet[0].Set,
                 * };
                 *
                 * context.SongSet.Add(songSet);
                 */
                //sca() returns number of saved changes
                var success = await context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem with saving changes!");
            }
Example #11
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var songIDs = context.Songs.Select(x => x.Id).ToList();

            XmlSerializer serializer = new XmlSerializer(typeof(ImportSongPerformerDTO[]), new XmlRootAttribute("Performers"));
            StringReader  rdr        = new StringReader(xmlString);

            ImportSongPerformerDTO[] songsPerformerDTO = (ImportSongPerformerDTO[])serializer.Deserialize(rdr);

            List <Performer>     performers      = new List <Performer>();
            List <SongPerformer> songsPerformers = new List <SongPerformer>();
            var newSB = new StringBuilder();

            foreach (var performer in songsPerformerDTO)
            {
                if (IsValid(performer) && performer.Songs.Select(x => x.Id).All(x => songIDs.Contains(x)))
                {
                    var newPerformer = new Performer()
                    {
                        Age       = performer.Age,
                        FirstName = performer.FirstName,
                        LastName  = performer.LastName,
                        NetWorth  = performer.NetWorth,
                    };
                    performers.Add(newPerformer);

                    foreach (var song in performer.Songs.Select(x => x.Id).Distinct())
                    {
                        var songPerformer = new SongPerformer()
                        {
                            Performer = newPerformer,
                            SongId    = song
                        };

                        songsPerformers.Add(songPerformer);
                    }

                    newSB.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, performer.Songs.Count()));
                }
                else
                {
                    newSB.AppendLine(ErrorMessage);
                }
            }

            context.Performers.AddRange(performers);
            context.SongsPerformers.AddRange(songsPerformers);
            context.SaveChanges();

            return(newSB.ToString().Trim());
        }
        public async Task <int> Add(SongPerformerDto input)
        {
            var songPerformers = new SongPerformer()
            {
                SongId      = input.SongId,
                PerformerId = input.PerformerId,
            };

            await this.repository.AddAsync(songPerformers);

            await this.repository.SaveChangesAsync();

            return(songPerformers.Id);
        }
Example #13
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer         = new XmlSerializer(typeof(ImportPerformerDto[]), new XmlRootAttribute("Performers"));
            var songPerformersDtos = (ImportPerformerDto[])serializer.Deserialize(new StringReader(xmlString));

            var performers = new List <Performer>();

            StringBuilder sb = new StringBuilder();

            foreach (var songPerformerDto in songPerformersDtos)
            {
                var  performer        = Mapper.Map <Performer>(songPerformerDto);
                bool isValidPerformer = IsValid(performer);

                var songs          = context.Songs.Select(s => s.Id).ToList();
                var doesSongsExist = songPerformerDto.PerformersSongs
                                     .Select(x => x.Id)
                                     .All(value => songs.Contains(value));

                if (isValidPerformer == false || doesSongsExist == false)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                foreach (var songDto in songPerformerDto.PerformersSongs)
                {
                    SongPerformer songPerformer = new SongPerformer
                    {
                        Performer   = performer,
                        PerformerId = performer.Id,
                        Song        = context.Songs.Find(songDto.Id),
                        SongId      = songDto.Id
                    };

                    performer.PerformerSongs.Add(songPerformer);
                }

                performers.Add(performer);

                sb.AppendLine(String.Format(SuccessfullyImportedPerformer
                                            , performer.FirstName
                                            , performer.PerformerSongs.Count));
            }

            context.Performers.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #14
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var xmlSerializer = new XmlSerializer(typeof(ImportPerformerDto[]),
                                                  new XmlRootAttribute("Performers"));

            var performers = (ImportPerformerDto[])xmlSerializer
                             .Deserialize(new StringReader(xmlString));

            StringBuilder sb = new StringBuilder();

            foreach (var dto in performers)
            {
                bool hasInvalidSong = dto.SongIds.Any(s => ValidSongId(context, s.Id) == false);

                if (IsValid(dto) && !hasInvalidSong)
                {
                    var performer = new Performer
                    {
                        FirstName = dto.FirstName,
                        LastName  = dto.LastName,
                        Age       = dto.Age,
                        NetWorth  = dto.NetWorth
                    };
                    context.Performers.Add(performer);

                    foreach (var id in dto.SongIds)
                    {
                        var song = context.Songs
                                   .First(s => s.Id == id.Id);
                        var performerSong = new SongPerformer
                        {
                            PerformerId = performer.Id,
                            SongId      = id.Id
                        };
                        context.SongsPerformers.Add(performerSong);
                    }

                    sb.AppendLine(string.Format(SuccessfullyImportedPerformer
                                                , dto.FirstName, performer.PerformerSongs.Count));
                }
                else
                {
                    sb.AppendLine(ErrorMessage);
                }
            }

            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #15
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer    = new XmlSerializer(typeof(PerformerDto[]), new XmlRootAttribute("Performers"));
            var performersDto = (PerformerDto[])serializer.Deserialize(new StringReader(xmlString));

            var sb         = new StringBuilder();
            var performers = new List <Performer>();

            foreach (var performerDto in performersDto)
            {
                var songs       = context.Songs.Select(s => s.Id).ToList();
                var isValidSong = performerDto.PerformersSongs.Select(s => s.Id).All(s => songs.Contains(s));


                if (!IsValid(performerDto) || !isValidSong)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer
                {
                    FirstName      = performerDto.FirstName,
                    LastName       = performerDto.LastName,
                    Age            = performerDto.Age,
                    NetWorth       = performerDto.NetWorth,
                    PerformerSongs = new List <SongPerformer>()
                };

                foreach (var songDto in performerDto.PerformersSongs)
                {
                    var song = new SongPerformer
                    {
                        SongId = songDto.Id
                    };

                    performer.PerformerSongs.Add(song);
                }

                performers.Add(performer);
                sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, performer.PerformerSongs.Count));
            }

            context.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            XmlSerializer ser = new XmlSerializer(typeof(PerformerImportDto[]), new XmlRootAttribute("Performers"));

            var performersDto = (PerformerImportDto[])ser.Deserialize(new StringReader(xmlString));

            List <Performer> performers = new List <Performer>();

            StringBuilder sb = new StringBuilder();

            foreach (var performerDto in performersDto)
            {
                if (!IsValid(performerDto))
                {
                    sb.AppendLine(ErrorMessage);

                    continue;
                }

                List <SongPerformer> validSongsPerformers = new List <SongPerformer>();

                bool areValidSongs = true;

                foreach (var songDto in performerDto.PerformersSongs)
                {
                    if (!context.Songs.Any(s => s.Id == songDto.Id))
                    {
                        sb.AppendLine(ErrorMessage);

                        areValidSongs = false;

                        break;
                    }
                }

                if (!areValidSongs)
                {
                    continue;
                }
                else
                {
                    var performer = new Performer()
                    {
                        FirstName = performerDto.FirstName,
                        LastName  = performerDto.LastName,
                        Age       = performerDto.Age,
                        NetWorth  = performerDto.NetWorth
                    };

                    foreach (var songDto in performerDto.PerformersSongs.Distinct())
                    {
                        var song = context.Songs.FirstOrDefault(s => s.Id == songDto.Id);

                        var songPerformer = new SongPerformer()
                        {
                            Song      = song,
                            Performer = performer
                        };

                        validSongsPerformers.Add(songPerformer);
                    }

                    performer.PerformerSongs = validSongsPerformers;

                    context.SongsPerformers.AddRange(validSongsPerformers);

                    context.Performers.Add(performer);

                    sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName,
                                                performer.PerformerSongs.Count));

                    context.SaveChanges();
                }
            }

            return(sb.ToString().TrimEnd());
        }
Example #17
0
            public async Task <Unit> Handle(Command request,
                                            CancellationToken cancellationToken)
            {
                var song = await context.Songs.FindAsync(request.Id);

                var songArray    = song.SongPerformer.ToArray();
                var songSetArray = song.SongSet.ToArray();

                if (song == null)
                {
                    throw new RestException(HttpStatusCode.NotFound, new { Song = "Not found!" });
                }


                //optional edits
                song.Name  = request.Name ?? song.Name;
                song.Genre = request.Genre;
                song.Text  = request.Text ?? song.Text;


                if (songArray[0].PerformerId != request.SongPerformer[0].Performer.Id)
                {
                    var removeObject = song.SongPerformer.ToArray().ElementAt(0);
                    song.SongPerformer.Remove(removeObject);


                    var songPerformer = new SongPerformer
                    {
                        SongId      = song.Id,
                        PerformerId = request.SongPerformer[0].Performer.Id,
                    };

                    song.SongPerformer.Add(songPerformer);
                }

                if (songSetArray[0].SetId != request.SongSet[0].Set.Id)
                {
                    var removeObject = song.SongSet.ToArray().ElementAt(0);
                    song.SongSet.Remove(removeObject);


                    var songSet = new SongSet
                    {
                        SongId = song.Id,
                        SetId  = request.SongSet[0].Set.Id,
                    };

                    song.SongSet.Add(songSet);
                }

                //song.SongPerformer = request.SongPerformer ?? song.SongPerformer;
                //song.SongSet = request.SongSet ?? song.SongSet;


                //sca() returns number of saved changes
                var success = await context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem with saving changes!");
            }
Example #18
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            StringBuilder stBuilder = new StringBuilder();

            var xmlSeserializer = new XmlSerializer(typeof(ImportPerformerDto[]),
                                                    new XmlRootAttribute("Performers"));
            var performersDto = (ImportPerformerDto[])xmlSeserializer.Deserialize(new StringReader(xmlString));

            var performerList = new List <Performer>();

            foreach (var performerDto in performersDto)
            {
                if (!IsValid(performerDto))
                {
                    stBuilder.AppendLine(ErrorMessage);
                    continue;
                }

                bool havesongs = true;
                var  songs     = new List <Song>();
                foreach (var songDto in performerDto.MappingTable)
                {
                    Song song = context.Songs.Where(s => s.Id == songDto.DtoId).FirstOrDefault();
                    if (song == null)
                    {
                        songs.Clear();
                        havesongs = false;
                        break;
                    }
                    else
                    {
                        songs.Add(song);
                    }
                }

                if (!havesongs)
                {
                    stBuilder.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer
                {
                    FirstName = performerDto.FirstName,
                    LastName  = performerDto.LastName,
                    Age       = performerDto.Age,
                    NetWorth  = performerDto.NetWorth
                };
                context.Performers.Add(performer);

                foreach (var song in songs)
                {
                    var songPerformer = new SongPerformer
                    {
                        Song      = song,
                        Performer = performer
                    };
                    context.SongsPerformers.Add(songPerformer);
                }
                // Imported { performer first name} ({ songs count}songs)
                string message = String.Format(SuccessfullyImportedPerformer, performer.FirstName, songs.Count);

                stBuilder.AppendLine(message);
            }
            string result = stBuilder.ToString().TrimEnd();

            context.SaveChanges();

            return(result);
        }
Example #19
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var sb = new StringBuilder();
            var listOfPerformers      = new List <Performer>();
            var listOfSongsPerformers = new List <SongPerformer>();

            var xmlSerializer = new XmlSerializer(typeof(XmlImportSongsPerformersDto[]), new XmlRootAttribute("Performers"));

            using (var stringReader = new StringReader(xmlString))
            {
                var prodDtos = (XmlImportSongsPerformersDto[])xmlSerializer.Deserialize(stringReader);

                foreach (var perfDto in prodDtos)
                {
                    if (!IsValid(perfDto))
                    {
                        sb.AppendLine(ErrorMessage);
                        continue;
                    }

                    var performer = new Performer
                    {
                        FirstName = perfDto.FirstName,
                        LastName  = perfDto.LastName,
                        Age       = perfDto.Age,
                        NetWorth  = perfDto.NetWorth
                    };

                    var areAllSongsValid         = true;
                    var tempListOfSongPerformers = new List <SongPerformer>();


                    //Check if all songs pass the validation and only then add them to the performer
                    foreach (var songDto in perfDto.PerformersSongs.Distinct())
                    {
                        if (!IsValid(songDto) || !context.Songs.Any(x => x.Id == songDto.Id))
                        {
                            areAllSongsValid = false;
                            sb.AppendLine(ErrorMessage);
                            break;
                        }

                        var songPerformer = new SongPerformer
                        {
                            Performer = performer,
                            SongId    = songDto.Id
                        };

                        tempListOfSongPerformers.Add(songPerformer);
                    }

                    if (areAllSongsValid)
                    {
                        listOfPerformers.Add(performer);

                        listOfSongsPerformers.AddRange(tempListOfSongPerformers);
                        sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, tempListOfSongPerformers.Count));

                        tempListOfSongPerformers.Clear();
                    }
                }

                context.Performers.AddRange(listOfPerformers);
                context.SongsPerformers.AddRange(listOfSongsPerformers);
                context.SaveChanges();

                return(sb.ToString().Trim());
            }
        }
Example #20
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            XmlSerializer serializer = new XmlSerializer(
                typeof(ImportPerformerDto[]),
                new XmlRootAttribute("Performers"));

            var performersDto = (ImportPerformerDto[])serializer.Deserialize(new StringReader(xmlString));


            var songsIds = context
                           .Songs
                           .Select(s => s.Id)
                           .ToList();

            List <Performer> performers = new List <Performer>();
            var sb = new StringBuilder();
            List <SongPerformer> songPerformers = new List <SongPerformer>();

            foreach (var dto in performersDto)
            {
                if (!IsValid(dto))
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer()
                {
                    FirstName = dto.FirstName,
                    LastName  = dto.LastName,
                    Age       = dto.Age,
                    NetWorth  = dto.NetWorth,
                };

                List <Song> validSongs      = new List <Song>();
                int         validSongsCount = dto.Songs.Length;

                foreach (var song in dto.Songs)
                {
                    if (!songsIds.Contains(song.Id))
                    {
                        continue;
                    }

                    var currentSong = context
                                      .Songs
                                      .Where(s => s.Id == song.Id)
                                      .First();

                    validSongs.Add(currentSong);
                }

                if (validSongs.Count == validSongsCount)
                {
                    performers.Add(performer);

                    foreach (var song in validSongs)
                    {
                        var songPerformer = new SongPerformer()
                        {
                            Performer = performer,
                            SongId    = song.Id,
                        };

                        songPerformers.Add(songPerformer);
                    }

                    sb.AppendLine($"Imported {performer.FirstName} ({validSongs.Count} songs)");
                }
                else
                {
                    sb.AppendLine(ErrorMessage);
                }
            }

            context
            .Performers
            .AddRange(performers);

            context
            .SongsPerformers
            .AddRange(songPerformers);

            context
            .SaveChanges();


            return(sb.ToString().Trim());
        }
Example #21
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer = new XmlSerializer(typeof(ImportPerformerDto[]),
                                               new XmlRootAttribute("Performers"));

            var objectsDto = (ImportPerformerDto[])serializer.Deserialize(new StringReader(xmlString));

            StringBuilder sb = new StringBuilder();

            foreach (var dto in objectsDto)
            {
                if (!IsValid(dto))
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                Performer performer = new Performer
                {
                    FirstName = dto.FirstName,
                    LastName  = dto.LastName,
                    Age       = dto.Age,
                    NetWorth  = dto.NetWorth
                };

                List <SongPerformer> songsByPerformer = new List <SongPerformer>();

                bool shouldAddPerformer = true;

                foreach (var currentSong in dto.PerformersSongs)
                {
                    bool isSongValid = context.Songs.Any(x => x.Id == currentSong.Id);

                    if (!isSongValid)
                    {
                        sb.AppendLine(ErrorMessage);
                        shouldAddPerformer = false;
                        break;
                    }

                    SongPerformer songPerformer = new SongPerformer
                    {
                        SongId      = currentSong.Id,
                        PerformerId = performer.Id
                    };

                    songsByPerformer.Add(songPerformer);
                    context.SongsPerformers.Add(songPerformer);
                }

                if (shouldAddPerformer)
                {
                    performer.PerformerSongs = songsByPerformer;
                    context.Performers.Add(performer);
                    context.SaveChanges();
                    sb.AppendLine(String.Format(SuccessfullyImportedPerformer,
                                                performer.FirstName,
                                                performer.PerformerSongs.Count));
                }
            }

            return(sb.ToString().TrimEnd());
        }
Example #22
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var xmlSerializer = new XmlSerializer(typeof(List <SongPerformerDto>),
                                                  new XmlRootAttribute("Performers"));

            var dtos = new List <SongPerformerDto>();

            using (var reader = new StringReader(xmlString))
            {
                dtos = (List <SongPerformerDto>)xmlSerializer.Deserialize(reader);
            }

            var performers = new List <Performer>();
            var sb         = new StringBuilder();

            foreach (var dto in dtos)
            {
                var performerSongs = new List <SongPerformer>();

                if (IsValid(dto))
                {
                    var performer = new Performer
                    {
                        FirstName = dto.FirstName,
                        LastName  = dto.LastName,
                        Age       = dto.Age,
                        NetWorth  = dto.NetWorth,
                    };

                    bool haveError = false;

                    foreach (var song in dto.PerformerSongs)
                    {
                        var currentSong = context.Songs.FirstOrDefault(s => s.Id == song.SongId);

                        if (currentSong == null)
                        {
                            haveError = true;
                            continue;
                        }

                        var songPerformer = new SongPerformer
                        {
                            Performer = performer,
                            Song      = currentSong
                        };

                        performerSongs.Add(songPerformer);
                    }

                    if (haveError)
                    {
                        sb.AppendLine(ErrorMessage);
                        continue;
                    }

                    performer.PerformerSongs = performerSongs;
                    performers.Add(performer);

                    sb.AppendLine($"Imported {performer.FirstName} ({performer.PerformerSongs.Count} songs)");
                }
                else
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }
            }
            context.Performers.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer = new XmlSerializer(typeof(ImportSongPerformerDto[]), new XmlRootAttribute("Performers"));

            var sb = new StringBuilder();

            var performerDtos = (ImportSongPerformerDto[])serializer.Deserialize(new StringReader(xmlString));

            var songs = new List <Song>();
            var ps    = new List <SongPerformer>();

            foreach (var dto in performerDtos)
            {
                if (IsValid(dto))
                {
                    var isInvalid = false;
                    var songIds   = new List <int>();

                    var performer = new Performer
                    {
                        FirstName = dto.FirstName,
                        LastName  = dto.LastName,
                        Age       = dto.Age,
                        NetWorth  = dto.NetWorth
                    };

                    foreach (var songDto in dto.PerformersSongs)
                    {
                        if (context.Songs.Any(s => s.Id == songDto.Id))
                        {
                            songIds.Add(songDto.Id);
                        }
                        else
                        {
                            sb.AppendLine(ErrorMessage);
                            isInvalid = true;
                            break;
                        }
                    }

                    if (!isInvalid)
                    {
                        context.Performers.Add(performer);
                        context.SaveChanges();

                        foreach (var songId in songIds)
                        {
                            var sp = new SongPerformer
                            {
                                SongId      = songId,
                                PerformerId = performer.Id
                            };

                            ps.Add(sp);
                        }

                        sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, songIds.Count));
                    }
                }
                else
                {
                    sb.AppendLine(ErrorMessage);
                }
            }

            context.SongsPerformers.AddRange(ps);
            context.SaveChanges();

            return(sb.ToString().Trim());
        }
Example #24
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var xmlSerializer = new XmlSerializer(typeof(ImportPerformerDto[]),
                                                  new XmlRootAttribute("Performers"));

            var performerDtos = (ImportPerformerDto[])(xmlSerializer.Deserialize(new StringReader(xmlString)));
            var performers    = new List <Performer>();

            StringBuilder sb = new StringBuilder();

            foreach (var performerDto in performerDtos)
            {
                var isValidPerformer = IsValid(performerDto);

                if (!isValidPerformer)
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var idExists = true;

                foreach (var songDto in performerDto.PerformerSongs)
                {
                    idExists = context.Songs.Any(s => s.Id == songDto.SongId);

                    if (!idExists)
                    {
                        sb.AppendLine(ErrorMessage);
                        break;
                    }
                }

                if (idExists)
                {
                    var performer = new Performer
                    {
                        FirstName = performerDto.FirstName,
                        LastName  = performerDto.LastName,
                        Age       = performerDto.Age,
                        NetWorth  = performerDto.NetWorth
                    };

                    foreach (var songDto in performerDto.PerformerSongs)
                    {
                        var song = context.Songs.FirstOrDefault(s => s.Id == songDto.SongId);

                        var songPerformer = new SongPerformer
                        {
                            PerformerId = performer.Id,
                            Performer   = performer,
                            SongId      = song.Id,
                            Song        = song
                        };

                        performer.PerformerSongs.Add(songPerformer);
                    }

                    performers.Add(performer);

                    sb.AppendLine(string.Format(
                                      SuccessfullyImportedPerformer,
                                      performer.FirstName,
                                      performer.PerformerSongs.Count));
                }
            }

            context.Performers.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #25
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var serializer = new XmlSerializer(typeof(ImportSongPerformer[]),
                                               new XmlRootAttribute("Performers"));

            ImportSongPerformer[] importSongPerformers;
            var sb         = new StringBuilder();
            var performers = new List <Performer>();

            using (var reader = new StringReader(xmlString))
            {
                importSongPerformers = (ImportSongPerformer[])serializer.Deserialize(reader);
            }

            foreach (var dto in importSongPerformers)
            {
                if (!IsValid(dto))
                {
                    sb.AppendLine(ErrorMessage);
                    continue;
                }

                var performer = new Performer
                {
                    FirstName = dto.FirstName,
                    LastName  = dto.LastName,
                    Age       = dto.Age,
                    NetWorth  = dto.NetWorth
                };

                bool isValidSong = true;

                foreach (var songDto in dto.PerformerSongs)
                {
                    var song = context.Songs.FirstOrDefault(x => x.Id == songDto.Id);

                    if (song == null)
                    {
                        sb.AppendLine(ErrorMessage);
                        isValidSong = false;
                        break;
                    }

                    var songPerformer = new SongPerformer
                    {
                        SongId = song.Id
                    };

                    performer.PerformerSongs.Add(songPerformer);
                }

                if (isValidSong)
                {
                    sb.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, performer.PerformerSongs.Count));
                    performers.Add(performer);
                    continue;
                }
            }

            context.Performers.AddRange(performers);
            context.SaveChanges();

            return(sb.ToString().TrimEnd());
        }
Example #26
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var xmlSerializer = new XmlSerializer(typeof(ImportPerformerDto[]), new XmlRootAttribute("Performers"));

            var sb = new StringBuilder();

            using (var reader = new StringReader(xmlString))
            {
                var performersDto = (ImportPerformerDto[])xmlSerializer.Deserialize(reader);

                var performers = new List <Performer>();

                foreach (var performerDto in performersDto)
                {
                    if (!IsValid(performerDto))
                    {
                        sb.AppendLine(ErrorMessage);
                        continue;
                    }

                    var currentPerformer = new Performer()
                    {
                        FirstName = performerDto.FirstName,
                        LastName  = performerDto.LastName,
                        Age       = performerDto.Age,
                        NetWorth  = performerDto.NetWorth
                    };

                    bool isSongIdCorrect = true;

                    foreach (var song in performerDto.PerformersSongs)
                    {
                        if (!IsValid(song))
                        {
                            sb.AppendLine(ErrorMessage);
                            isSongIdCorrect = false;
                            break;
                        }

                        var findSongId = context
                                         .Songs
                                         .FirstOrDefault(s => s.Id == song.Id);

                        if (findSongId == null)
                        {
                            sb.AppendLine(ErrorMessage);
                            isSongIdCorrect = false;
                            break;
                        }

                        SongPerformer songPerformer = new SongPerformer()
                        {
                            Song      = findSongId,
                            Performer = currentPerformer
                        };

                        currentPerformer.PerformerSongs.Add(songPerformer);
                    }

                    if (isSongIdCorrect)
                    {
                        performers.Add(currentPerformer);
                        sb.AppendLine(String.Format(SuccessfullyImportedPerformer, currentPerformer.FirstName, currentPerformer.PerformerSongs.Count));
                    }
                }

                context.Performers.AddRange(performers);
                context.SaveChanges();

                return(sb.ToString().TrimEnd());
            }
        }
Example #27
0
        public static string ImportSongPerformers(MusicHubDbContext context, string xmlString)
        {
            var ser = new XmlSerializer(typeof(List <XmlImportPerformer>), new XmlRootAttribute("Performers"));

            var res = new StringBuilder();

            var performers = new List <Performer>();

            var validPerfsDto = new List <XmlImportPerformer>();

            var performersDto = (List <XmlImportPerformer>)ser.Deserialize(new StringReader(xmlString));

            foreach (var perfDto in performersDto)
            {
                var invalidId = false;

                foreach (var songId in perfDto.SongIds)
                {
                    if (!context.Songs.Any(s => s.Id == songId.Id))
                    {
                        invalidId = true;
                    }
                }

                if (invalidId || !IsValid(perfDto))
                {
                    res.AppendLine(ErrorMessage);

                    continue;
                }

                var performer = Mapper.Map <Performer>(perfDto);

                performers.Add(performer);

                validPerfsDto.Add(perfDto);

                res.AppendLine(string.Format(SuccessfullyImportedPerformer, performer.FirstName, perfDto.SongIds.Count));
            }

            context.Performers.AddRange(performers);

            var songsPerfs = new List <SongPerformer>();

            for (int i = 0; i < performers.Count; i++)
            {
                var perfId = performers[i].Id;

                var perfDto = validPerfsDto[i];

                foreach (var songId in perfDto.SongIds)
                {
                    var song = new SongPerformer
                    {
                        SongId      = songId.Id,
                        PerformerId = perfId
                    };

                    songsPerfs.Add(song);
                }
            }

            context.SongsPerformers.AddRange(songsPerfs);

            context.SaveChanges();

            return(res.ToString().Trim());
        }