Esempio n. 1
0
 private void Map(LocationOverviewDto locationsOverview, LocationDetailsDto locationsDetails)
 {
     locationsDetails.Name             = locationsOverview.Name;
     locationsDetails.IsRetroGamesOnly = locationsOverview.IsRetroGamesOnly;
     locationsDetails.Town             = locationsOverview.Town;
     locationsDetails.EntryPrice       = locationsOverview.EntryPrice;
     locationsDetails.Rating           = locationsOverview.Rating;
     locationsDetails.IsChildFriendly  = locationsOverview.IsChildFriendly;
     locationsDetails.IsFoodServed     = locationsOverview.IsFoodServed;
 }
Esempio n. 2
0
        public async Task <WriteRequestResult> Add(LocationDetailsDto locationDetails)
        {
            try
            {
                var locationDetailsModel = _mapper.Map <LocationDetailsModel>(locationDetails);

                var gameIds = locationDetails.GameOverviewList.Keys.ToList();
                locationDetailsModel.GameOverviewList = await CreateValidGamesList(gameIds.ConvertAll(Guid.Parse));

                var locationOverviewModel = _mapper.Map <LocationOverviewModel>(locationDetails);

                var locationExists = await GetLocationIdOrDefault(locationDetailsModel);

                if (locationExists != default(Guid))
                {
                    return(new WriteRequestResult {
                        ItemId = locationExists, Status = WriteRequestStatus.Duplicate
                    });
                }

                var locationId = Guid.NewGuid();

                locationDetailsModel.Id  = locationId;
                locationOverviewModel.Id = locationId;

                // todo: how to undo a write if another fails -> https://stackoverflow.com/questions/51703022/rollback-with-dynamodb

                var locationDetailsTask  = _locationDetailsRepository.Add(locationDetailsModel);
                var locationOverviewTask = _locationOverviewRepository.Add(locationOverviewModel);

                await Task.WhenAll(locationDetailsTask, locationOverviewTask);

                return(new WriteRequestResult {
                    ItemId = null, Status = WriteRequestStatus.Success
                });
            }
            catch (ValueNotFoundInDatabaseException ex)
            {
                // todo: do something when this is found. expectation is that a user will have selected values retrived from the DB only
                return(new WriteRequestResult {
                    ItemId = null, Status = WriteRequestStatus.Failed
                });
            }
            catch (Exception ex)
            {
                // todo: revise this to look for specific error
                return(new WriteRequestResult {
                    ItemId = null, Status = WriteRequestStatus.Failed
                });
            }
        }
        public IDataResult <LocationDetailsDto> GetLocationDetailsDtoById(int locationId)
        {
            var location   = _locationDao.Get(l => l.Id == locationId);
            var locAddress = _addressDao.Get(a => a.Id == location.AddressId);

            var locationDetailsDto = new LocationDetailsDto
            {
                LocationId         = location.Id,
                LocationCode       = location.Code,
                LocationName       = location.Name,
                LocationTypeId     = location.LocationTypeId,
                LocationTypeName   = location.LocationTypeId.ToString(),
                IsInternalLocation = location.IsInternalLocation,
                IsReturnLocation   = location.IsReturnLocation,
                IsScrapLocation    = location.IsScrapLocation,
                AddressId          = locAddress.Id,
                AddressTitle       = locAddress.Title
            };

            return(new SuccessDataResult <LocationDetailsDto>(locationDetailsDto));
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            var isParamGuid = Guid.TryParse(req.Query["id"], out var locationOverviewId);

            if (!isParamGuid)
            {
                return(new BadRequestObjectResult("the parameter **id** must be a valid Guid"));
            }

            LocationDetailsDto responseMessage = await _locationDetailsService.Get(locationOverviewId);

            if (responseMessage == null)
            {
                return(new NoContentResult());
            }

            return(new OkObjectResult(responseMessage));
        }
        public async Task OkResultReturnsWhenLocationDetailsNotNull()
        {
            var req         = new Mock <HttpRequest>();
            var queryString = new Dictionary <string, StringValues>()
            {
                { "id", Guid.NewGuid().ToString() }
            };

            req.Setup(x => x.Query).Returns(new QueryCollection(queryString));
            var locationDetails = new LocationDetailsDto {
                Id = Guid.NewGuid()
            };

            _locationsDetailsServiceMock.Setup(x => x.Get(It.IsAny <Guid>())).Returns(Task.FromResult(locationDetails));

            IActionResult actual = await _sut.Run(req.Object, _loggerMock.Object);

            var expected     = new OkObjectResult(locationDetails);
            var actualResult = (OkObjectResult)actual;

            Assert.True(expected.GetType() == actual.GetType());
            Assert.Equal(expected.Value, actualResult.Value);
        }