Exemplo n.º 1
0
        public async Task <WagonModel> CreateWagonAsync(WagonModel wagonModel)
        {
            if (wagonModel is null || String.IsNullOrEmpty(wagonModel.TrainId.ToString()))
            {
                throw new ArgumentNullException(nameof(wagonModel));
            }

            var chairs = new List <Data.Entities.Chair>();

            for (int i = 1; i < wagonModel.NumberOfChairs + 1; i++)
            {
                chairs.Add(new Data.Entities.Chair {
                    NearWindow = false, Number = i, Reserved = false
                });
            }

            var wagonEntity = new Data.Entities.Wagon
            {
                Chairs  = chairs,
                TrainId = wagonModel.TrainId
            };

            wagonEntity = await _wagonRepository.AddAsync(wagonEntity);

            var listChairs = wagonEntity.Chairs
                             .Select(x => new ChairModel()
            {
                ChairId = x.ChairId, NearWindow = x.NearWindow, Number = x.Number, Reserved = x.Reserved, WagonId = x.WagonId
            })
                             .ToList();

            return(new WagonModel
            {
                WagonId = wagonEntity.WagonId,
                NumberOfChairs = wagonEntity.Chairs.Count,
                TrainId = wagonEntity.TrainId,
                Chairs = listChairs
            });
        }