public ParseFileResult ParseFile(Stream fileStream, LocationInfo targetLocation,
                                         IFieldDataResultsAppender appender, ILog logger)
        {
            var parser = new AquaCalcCsvParser(fileStream)
            {
                Settings = appender.GetPluginConfigurations()
            };

            if (!parser.CanParse())
            {
                return(ParseFileResult.CannotParse());
            }

            var parsedData = parser.Parse();

            if (targetLocation == null)
            {
                targetLocation = appender.GetLocationByIdentifier(parsedData.GageId);
            }

            var visitDetails = new VisitMapper(parsedData).GetVisitDetails(targetLocation.UtcOffset);

            logger.Info($"Got visit details: '{visitDetails.StartDate:s}@{targetLocation.LocationIdentifier}'");

            var visitInfo = appender.AddFieldVisit(targetLocation, visitDetails);

            AppendActivity(appender, parsedData, visitInfo, logger);

            return(ParseFileResult.SuccessfullyParsedAndDataValid());
        }
Beispiel #2
0
        public void GetVisitDetails_ReturnsCorrectVisitDateAndParty()
        {
            var mapper       = new VisitMapper(_parsedData);
            var utcOffset    = TimeSpan.FromHours(-8);
            var visitDetails = mapper.GetVisitDetails(utcOffset);

            Assert.That(visitDetails.StartDate, Is.EqualTo(new DateTimeOffset(2018, 01, 03, 0, 0, 0, utcOffset)));
            Assert.That(visitDetails.Party, Is.EqualTo("1482"));
        }
        public ActionResult <IEnumerable <Visit> > GetAll()
        {
            var result = _visitManager.GetAll();

            if (result.IsInvalid)
            {
                return(new StatusCodeResult(500));
            }

            return(result.Object
                   .Select(entity => VisitMapper.ToModel(entity))
                   .ToList());
        }
Beispiel #4
0
        private VisitsController SetupController(IEnumerable <Visit> visits = null, StringBuilder stringBuilder = null)
        {
            visits = visits ?? new List <Visit>();

            var visitDataStore = new MockVisitStore(visits.Select(model => VisitMapper.ToEntity(model)).ToList());

            var campaigns      = CampaignSamples.Get().Select(model => CampaignMapper.ToEntity(model)).ToList();
            var campaignStore  = new MockCampaignStore(campaigns);
            var campaignSearch = new SimpleCampaignSearch(campaignStore);
            var stringWriter   = new StringWriter(stringBuilder ?? new StringBuilder());

            var pushNotificationProviderFactory = new PushNotificationProviderFactory(stringWriter);

            var manager = new VisitManager(visitDataStore, campaignSearch, pushNotificationProviderFactory);

            return(new VisitsController(manager, logger: null));
        }
        public ActionResult PostBatch([FromBody] IEnumerable <Visit> visits)
        {
            var validations       = visits.Select(campaign => campaign.Validate()).ToArray();
            var summaryValidation = new CommandNotification(validations);

            if (summaryValidation.IsInvalid)
            {
                return(StatusCode(500, summaryValidation.Notifications));
            }

            var entities = visits.Select(model => VisitMapper.ToEntity(model)).ToList();
            var result   = _visitManager.Load(entities);

            if (result.IsInvalid)
            {
                return(StatusCode(500, result.Notifications));
            }

            return(Ok());
        }