private static VisitorDetails ExtractVisitorDetails(MigrationDbNotification notification)
        {
            var hasVisitor        = Converter.GetStatusFromString(notification.HasVisitor);
            int?numberOfCountries = Converter.ToNullableInt(notification.visitor_TotalNumberOfCountries);
            var countriesRecorded = new List <int?>
            {
                notification.visitor_Country1, notification.visitor_Country2, notification.visitor_Country3
            }.Distinct()
            .Count(c => c != null);
            int?totalNumberOfCountries = hasVisitor == Status.Yes && numberOfCountries != null
                ? Math.Max(numberOfCountries.Value, countriesRecorded)
                : (int?)null;

            var details = new VisitorDetails();

            details.HasVisitor             = hasVisitor;
            details.TotalNumberOfCountries = totalNumberOfCountries;
            details.Country1Id             = notification.visitor_Country1;
            details.Country2Id             = notification.visitor_Country2;
            details.Country3Id             = notification.visitor_Country3;
            details.StayLengthInMonths1    = notification.visitor_StayLengthInMonths1;
            details.StayLengthInMonths2    = notification.visitor_StayLengthInMonths2;
            details.StayLengthInMonths3    = notification.visitor_StayLengthInMonths3;
            RemoveDuplicateCountries(details);
            return(details);
        }
 private void UpdateVisitorDetails(Notification notification, VisitorDetails visitorDetails)
 {
     if (visitorDetails.HasVisitor != Status.Yes)
     {
         ClearTravelOrVisitorFields(visitorDetails);
     }
     _context.SetValues(notification.VisitorDetails, visitorDetails);
 }
Exemple #3
0
        protected override async Task ValidateAndSave()
        {
            TravelDetails.SetValidationContext(Notification);
            VisitorDetails.SetValidationContext(Notification);

            CleanModel();

            TryValidateModel(TravelDetails, TravelDetails.GetType().Name);
            TryValidateModel(VisitorDetails, VisitorDetails.GetType().Name);

            if (ModelState.IsValid)
            {
                await Service.UpdateTravelAndVisitorAsync(Notification, TravelDetails, VisitorDetails);
            }
        }
        protected override async Task <IActionResult> PrepareAndDisplayPageAsync(bool isBeingSubmitted)
        {
            TravelDetails  = Notification.TravelDetails;
            VisitorDetails = Notification.VisitorDetails;
            await SetNotificationProperties(isBeingSubmitted, TravelDetails);
            await SetNotificationProperties(isBeingSubmitted, VisitorDetails);

            if (TravelDetails.ShouldValidateFull)
            {
                TryValidateModel(TravelDetails, TravelDetails.GetType().Name);
            }
            if (VisitorDetails.ShouldValidateFull)
            {
                TryValidateModel(VisitorDetails, VisitorDetails.GetType().Name);
            }

            return(Page());
        }
Exemple #5
0
        public IHttpActionResult InsertUpdateVisitorDetails([FromBody] VisitorDetails visitorDetails)
        {
            if (visitorDetails.Id == 0)
            {
                var visitorDetailsFromDb = _visitorDetailsBO.Insert(visitorDetails);

                if (visitorDetailsFromDb == null)
                {
                    return(NotFound());
                }

                return(Ok(visitorDetailsFromDb));
            }
            else
            {
                _visitorDetailsBO.Update(visitorDetails);
                return(Ok(visitorDetails));
            }
        }
Exemple #6
0
        /// <inheritdoc />
        public Task CreateVisitorAsync(string visitId, VisitorDetails visitor)
        {
            if (string.IsNullOrEmpty(visitId))
            {
                throw new ArgumentException("Visit Id has to be set.", nameof(visitId));
            }

            if (visitor == null)
            {
                throw new ArgumentException("Visitor details has to be set.", nameof(visitor));
            }

            var request = new CreateVisitorRequest
            {
                VisitId = visitId,
                Visitor = visitor
            };

            return(PostAsync <object>($"{TrackingEndpointRoutePrefix}/visitor", JsonConvert.SerializeObject(request)));
        }
        public async Task <IActionResult> Checkin([FromQuery] int adviserId, [FromBody] VisitorDetails details)
        {
            await _notifier.NotifyVisitorArrived(adviserId, details);

            return(Ok());
        }
Exemple #8
0
 public IActionResult OnPostValidateVisitor([FromBody] VisitorDetails visitorDetails)
 {
     Service.ClearTravelOrVisitorFields(visitorDetails);
     return(ValidationService.GetFullModelValidationResult(visitorDetails));
 }
        public async Task UpdateTravelAndVisitorAsync(Notification notification, TravelDetails travelDetails, VisitorDetails visitorDetails)
        {
            UpdateTravelDetails(notification, travelDetails);
            UpdateVisitorDetails(notification, visitorDetails);

            await _notificationRepository.SaveChangesAsync();
        }