private List <CitizenSql> ReadCsv(IFormFile file) { var citizenSqls = new List <CitizenSql>(); using (var reader = new StreamReader(file.OpenReadStream())) { using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { /*csv.Configuration.HasHeaderRecord = true; * var records = csv.GetRecords<T>(); * return records.ToList();*/ csv.Read(); csv.ReadHeader(); while (csv.Read()) { var citizenCsv = csv.GetRecord <CitizenCsv>(); _peopleService.ValidateCitizenCsv(citizenCsv); citizenSqls.Add(CitizenConverter.FromCsvToSql(citizenCsv)); } return(citizenSqls); } } }
public async Task <byte[]> GetCsvResult(List <CitizenSql> citizensSql) { byte[] result; await using var memoryStream = new MemoryStream(); await using var streamWriter = new StreamWriter(memoryStream); await using var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture); csvWriter.WriteHeader <CitizenCsv>(); await csvWriter.NextRecordAsync(); foreach (var citizenSql in citizensSql) { var citizenCsv = CitizenConverter.FromSqlToCsv(citizenSql); csvWriter.WriteRecord <CitizenCsv>(citizenCsv); await csvWriter.NextRecordAsync(); } await streamWriter.FlushAsync(); result = memoryStream.ToArray(); return(result); /*await csvWriter.WriteRecordsAsync<CitizenSql>(citizensSql); * await streamWriter.FlushAsync(); * result = memoryStream.ToArray(); * return result;*/ }
public async Task <ActionResult <RpAddCitizen> > AddCitizen([FromBody] RqAddCitizen rqAddCitizen) { try { if (!string.IsNullOrEmpty(rqAddCitizen.Citizen.Inn) && !ValidationsCollection.Validations.IsValidInnForIndividual(rqAddCitizen.Citizen.Inn)) { return(Json(ResponseHelper.ReturnBadRequest("Inn not valid"))); } if (!string.IsNullOrEmpty(rqAddCitizen.Citizen.Snils) && !ValidationsCollection.Validations.IsValidSnils(StringConverter.GetNumbers(rqAddCitizen.Citizen.Snils))) { return(Json(ResponseHelper.ReturnBadRequest("Snils not valid"))); } var citizenSql = new CitizenSql(); try { citizenSql = CitizenConverter.FromApiV1ToSql(rqAddCitizen.Citizen); } catch (Exception exception) { LoggerStatic.Logger.Warn("Exception: " + exception); return(Json(ResponseHelper.ReturnBadRequest(exception.Message))); } var guid = await _peopleService.AddCitizen(citizenSql); var rpAddCitizen = new RpAddCitizen { Guid = guid }; return(Json(rpAddCitizen)); } catch (Exception exception) { LoggerStatic.Logger.Error("Exception: " + exception); return(Json(ResponseHelper.ReturnInternalServerError(exception.Message))); } }
public async Task <ActionResult <RpGetCitizens> > GetCitizens([FromBody] RqGetCitizens rqGetCitizens) { try { if (!string.IsNullOrEmpty(rqGetCitizens.SearchRequest.Inn) && !ValidationsCollection.Validations.IsValidInnForIndividual(rqGetCitizens.SearchRequest.Inn)) { return(Json(ResponseHelper.ReturnBadRequest("Inn not valid"))); } if (!string.IsNullOrEmpty(rqGetCitizens.SearchRequest.Snils) && !ValidationsCollection.Validations.IsValidSnils(StringConverter.GetNumbers(rqGetCitizens.SearchRequest.Snils))) { return(Json(ResponseHelper.ReturnBadRequest("Snils not valid"))); } var searchRequestParsed = new SearchRequestParsed(); try { searchRequestParsed = CitizenConverter.FromSearchRequestToSearchRequestParsed(rqGetCitizens.SearchRequest); } catch (Exception exception) { LoggerStatic.Logger.Warn("Exception: " + exception); return(Json(ResponseHelper.ReturnBadRequest(exception.Message))); } var rpGetCitizens = new RpGetCitizens { Citizens = await _peopleService.GetCitizens(searchRequestParsed) }; //return Json(rpGetCitizens); return(ControllersHelper.ReturnContentResult(SerializerJson.SerializeObjectToJsonString(rpGetCitizens))); } catch (Exception exception) { LoggerStatic.Logger.Error("Exception: " + exception); return(Json(ResponseHelper.ReturnInternalServerError(exception.Message))); } }
public async Task <FileContentResult> ExportCsv([FromBody] RqGetCitizens rqGetCitizens) { try { if (!string.IsNullOrEmpty(rqGetCitizens.SearchRequest.Inn) && !ValidationsCollection.Validations.IsValidInnForIndividual(rqGetCitizens.SearchRequest.Inn)) { return(File(new UTF8Encoding().GetBytes($"Exception: Inn not valid)"), "text/csv", "exception.txt")); } if (!string.IsNullOrEmpty(rqGetCitizens.SearchRequest.Snils) && !ValidationsCollection.Validations.IsValidSnils(StringConverter.GetNumbers(rqGetCitizens.SearchRequest.Snils))) { return(File(new UTF8Encoding().GetBytes($"Exception: Snils not valid)"), "text/csv", "exception.txt")); } var searchRequestParsed = new SearchRequestParsed(); try { searchRequestParsed = CitizenConverter.FromSearchRequestToSearchRequestParsed(rqGetCitizens.SearchRequest); } catch (Exception exception) { LoggerStatic.Logger.Warn("Exception: " + exception); return(File(new UTF8Encoding().GetBytes($"Exception: {exception})"), "text/csv", "exception.txt")); } var citizens = await _peopleService.GetCitizens(searchRequestParsed); var csvBytes = await _peopleService.GetCsvResult(citizens); return(File(csvBytes, "text/csv", $"Citizens-{DateTime.Now:yyyy-MM-dd-H-mm-ss}.csv")); } catch (Exception exception) { LoggerStatic.Logger.Error("Exception: " + exception); return(File(new System.Text.UTF8Encoding().GetBytes($"Exception: {exception}"), "text/csv", "exception.txt")); } }