public async Task <SightViewModel> UpdateSight(int sightId, SightViewModel sight)
        {
            var sightToUpdate = await _applicationDbContext.Sights.FirstOrDefaultAsync(x => x.SightId == sightId);

            sightToUpdate.Description = sight.Description;
            sightToUpdate.Title       = sight.Title;
            _applicationDbContext.Sights.Update(sightToUpdate);
            await _applicationDbContext.SaveChangesAsync();

            return(_mapper.Map <SightViewModel>(sightToUpdate));
        }
        public async Task <SightViewModel> CreateSight(SightViewModel sight)
        {
            Sight sightToCreate =
                new Sight
            {
                Description = sight.Description,
                Title       = sight.Title,
                TourId      = sight.TourId
            };

            sightToCreate.Tour = await _applicationDbContext.Tours.FirstOrDefaultAsync(x => x.TourId == sight.TourId);

            await _applicationDbContext.Sights.AddAsync(sightToCreate);

            await _applicationDbContext.SaveChangesAsync();

            return(_mapper.Map <SightViewModel>(sightToCreate));
        }
Beispiel #3
0
        public async Task <IHttpActionResult> PostSight(SightViewModel sightViewModel, string language)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var sight = (Sight)sightViewModel;

            sight.TitleKey       = Guid.NewGuid().ToString() + nameof(sightViewModel.Title);
            sight.DescriptionKey = Guid.NewGuid().ToString() + nameof(sightViewModel.Description);

            var description = new Localization
            {
                Value   = sightViewModel.Description,
                Key     = sightViewModel.DescriptionKey,
                Culture = language,
            };

            _db.Localizations.Add(description);

            var title = new Localization
            {
                Value   = sightViewModel.Title,
                Key     = sightViewModel.TitleKey,
                Culture = language,
            };

            _db.Localizations.Add(title);

            _db.Sights.Add(sight);
            await _db.SaveChangesAsync();

            sightViewModel.SightId = sight.SightId;

            return(CreatedAtRoute("DefaultApi", new { id = sightViewModel.SightId }, sightViewModel));
        }
Beispiel #4
0
        public async Task <IHttpActionResult> PutSight(int id, SightViewModel sightViewModel, string language)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != sightViewModel.SightId)
            {
                return(BadRequest());
            }

            var sight = (Sight)sightViewModel;

            var title = _db.Localizations.FirstOrDefault(x => x.Key == sight.TitleKey && x.Culture == language);

            var description =
                _db.Localizations.FirstOrDefault(x => x.Key == sight.DescriptionKey && x.Culture == language);

            if (description == null)
            {
                description = new Localization
                {
                    Value   = sightViewModel.Description,
                    Key     = sightViewModel.DescriptionKey,
                    Culture = language,
                };
                _db.Localizations.Add(description);
            }
            else
            {
                if (description.Value != sightViewModel.Description)
                {
                    _db.Entry(description).State = EntityState.Modified;
                }
            }

            if (title == null)
            {
                title = new Localization
                {
                    Value   = sightViewModel.Title,
                    Key     = sightViewModel.TitleKey,
                    Culture = language,
                };
                _db.Localizations.Add(title);
            }
            else
            {
                if (title.Value != sightViewModel.Title)
                {
                    _db.Entry(title).State = EntityState.Modified;
                }
            }

            _db.Entry(sight).State = EntityState.Modified;

            try
            {
                await _db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SightExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <ActionResult <SightViewModel> > UpdateSight(Int32 sightId, [FromBody] SightViewModel sight)
        {
            var result = await _sightsService.UpdateSight(sightId, sight);

            return(Ok(result));
        }
        public async Task <ActionResult <SightViewModel> > CreateSight([FromBody] SightViewModel sight)
        {
            var result = await _sightsService.CreateSight(sight);

            return(Ok(result));
        }