Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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;*/
        }
Пример #3
0
        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)));
            }
        }
Пример #4
0
        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)));
            }
        }
Пример #5
0
        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"));
            }
        }