コード例 #1
0
        public Guid CreateAnimal(AnimalViewData animalViewData)
        {
            using (var entities = this.EntityContext)
            {
                var animalEntity = new Animal { Id = Guid.NewGuid() };

                entities.AddToAnimal(animalEntity);
                this.SaveOrUpdateAnimal(animalViewData, animalEntity, entities);
                entities.SaveChanges();

                return animalEntity.Id;
            }
        }
コード例 #2
0
        private void SaveOrUpdateAnimal(AnimalViewData animalViewData, Animal animalEntity, ZoosManagementSystemEntities entities)
        {
            animalEntity.Name = animalViewData.Name;
            animalEntity.Species = animalViewData.Species;
            animalEntity.Sex = (animalViewData.Sex.ToLowerInvariant() == "macho") ? "M" : "F";
            animalEntity.Cost = animalViewData.Cost;
            animalEntity.BornInCaptivity = animalViewData.BornInCaptivity;
            animalEntity.BirthDate = DateTime.Parse(animalViewData.BirthDate);
            animalEntity.NextHealthMeasure = DateTime.Parse(animalViewData.NextHealthMeasure);

            var responsibleId = new Guid(animalViewData.ResponsibleId);
            animalEntity.Responsible = entities.Responsible.FirstOrDefault(r => r.Id == responsibleId);

            if (!string.IsNullOrEmpty(animalViewData.EnvironmentId))
            {
                var environmentId = new Guid(animalViewData.EnvironmentId);
                animalEntity.Environment = entities.Environment.FirstOrDefault(r => r.Id == environmentId);
            }
            else
            {
                animalEntity.Environment = null;
            }

            foreach (var feedingTime in animalViewData.FeedingTimes.Where(ft => !ft.FeedingTimeStatus.Equals("None", StringComparison.InvariantCultureIgnoreCase)))
            {
                FeedingTime feedingTimeEntity = null;
                if (feedingTime.FeedingTimeStatus.Equals("New", StringComparison.InvariantCultureIgnoreCase))
                {
                    feedingTimeEntity = new FeedingTime
                        {
                            Id = Guid.NewGuid(),
                            Animal = animalEntity
                        };

                    entities.AddToFeedingTime(feedingTimeEntity);
                }
                else
                {
                    var feedingTimeId = new Guid(feedingTime.FeedingTimeId);
                    feedingTimeEntity = entities.FeedingTime
                        .Include("Feeding")
                        .Where(ft => ft.Id == feedingTimeId)
                        .FirstOrDefault();

                    if (feedingTimeEntity == null)
                    {
                        throw new ArgumentException(
                            string.Format(
                                CultureInfo.CurrentCulture,
                                "No existe ningún horario de alimentación con el Id {0} para actualizar.",
                                feedingTime.FeedingTimeId));
                    }
                }

                if (feedingTime.FeedingTimeStatus.Equals("Remove", StringComparison.InvariantCultureIgnoreCase))
                {
                    entities.DeleteObject(feedingTimeEntity);
                }
                else
                {
                    var feedingId = new Guid(feedingTime.FeedingId);

                    feedingTimeEntity.Amount = feedingTime.Amount;
                    feedingTimeEntity.Time = TimeSpan.Parse(feedingTime.Time);
                    feedingTimeEntity.Feeding = entities.Feeding.FirstOrDefault(f => f.Id == feedingId);
                }
            }
        }