示例#1
0
        public async Task <Result> Handle(CreateOrUpdateCounties request, CancellationToken cancellationToken)
        {
            var result = await ReadFromCsv(request)
                         .Ensure(x => x != null && x.Count > 0, "No counties to add or update")
                         .Bind(x => ValidateData(x))
                         .Tap(async x => await InsertOrUpdateCounties(x, cancellationToken));

            return(result);
        }
示例#2
0
        private Result <List <CountyCsvModel> > ReadFromCsv(CreateOrUpdateCounties request)
        {
            List <CountyCsvModel> counties;

            try
            {
                using var reader = new StreamReader(request.File.OpenReadStream());
                using var csv    = new CsvReader(reader);
                counties         = csv.GetRecords <CountyCsvModel>()
                                   .ToList();
            }
            catch (Exception e)
            {
                _logger.LogError("Unable to read csv file", e);
                return(Result.Failure <List <CountyCsvModel> >("Cannot read csv file provided"));
            }

            return(Result.Ok(counties));
        }