Exemple #1
0
        private List <Actor> SaveNewActors(MovieViewModel movieVm, List <Actor> newActors, IEnumerable <Actor> currentMovieActors)
        {
            var newCheckedActors = new List <Actor>();

            newCheckedActors = movieVm.MovieActors?.Where(x => !currentMovieActors.Any(y => y.Id == x.Id))?.ToList();

            if (!newActors.Any() && !newCheckedActors.Any())
            {
                return(new List <Actor>());
            }

            var newActorsCount = newActors.Count;
            var savedRecords   = 0;

            try
            {
                savedRecords = _actorDbService.AddBatch(newActors);

                if (newActors.Count != savedRecords)
                {
                    throw new Exception();
                }

                newActors = newActors.Concat(newCheckedActors).ToList();
            }
            catch (Exception ex)
            {
                if (newActorsCount != savedRecords)
                {
                    throw new Exception($"Failed to save {newActors.Count - savedRecords} actors information");
                }

                throw new Exception("Failed to save actor information");
            }

            return(newActors);
        }