Skip to content

Repository files navigation

Alina

Репозиторий с решением тестового задания. В решении два проекта. Основной функционал в библиотеке AlinaLib.dll (Проект AlinaLib). UI написан на WPF в проекте AlinaWpfUI. В папке _InputData исходные входные данные (файлы .csv и .xml).

image

Тестовое задание

Цель: Разработать программу, которая обрабатывает данные из двух различных файлов форматов .xml и .csv, и генерирует итоговый файл в формате .json.

Описание Задачи:

Входные Данные:

  • Программа получает на вход файлы. Из двух файлов она сопоставляет единный набор данных для дальнейшей работы с ним. Файлы в формате .xml, второй в формате .csv.
  • Файлы могут поступать не одновременно. Программа должна уметь обрабатывать поступающие файлы по мере их появления и работать только с тем набором данных, который удалось сформировать из двух сопоставленных csv и xml.
  • Могут сначала приходить только CSV файлы, например 5 штук, затем XML файлы, которые не обязаны быть свзяаны с предыдущеми CSV. Если среди этих CSV и XML программа обноруживает связанные файлы, она готова работать с этим набором данных, остальные файлы, которые еще не получили связанный файл, продолжают ожидать.
Обработка Данных:
  • После получения каждого файла программа сопоставляет его с существующими файлами, чтобы найти свою пару.
  • Если найдены 2 файла, которые можно сопоставить, программа перед генерацией итогового файла, выводит уведомление(в любом виде, можно просто Label на форме) о количестве записей, которые будут сформированы.
  • Если удалось найти 2 связанных файла, программа по нажатию на кнопку на форме формирует итоговый файл/отчет.

Итоговый Файл:

  • Для начала процесса генерации ответного файла, должна быть предусмотрена кнопка "Сформировать отчет".
  • Результатом работы программы является файл в формате .json, содержащий совмещенные данные из обоих входных файлов.

Настройки:

  • Возможность задавать директории для входных файлов и для сохранения итогового файла. Это можно реализовать через графический интерфейс или настройками в файле (например, Settings.xml или Settings.json). Пример входных данных:
<?xml version="1.0" encoding="UTF-8" ?>
<Cards>
    <Card UserId="1">
        <Pan>1234123412341231</Pan>
        <ExpDate>10/11/2017</ExpDate>
    </Card>
    <Card UserId="2">
        <Pan>1234123412341232</Pan>
        <ExpDate>20/11/2017</ExpDate>
    </Card>
    <Card UserId="3">
        <Pan>1234123412341233</Pan>
        <ExpDate>30/11/2017</ExpDate>
    </Card>
        <Card UserId="4">
        <Pan>1234123412341234</Pan>
        <ExpDate>24/11/2017</ExpDate>
    </Card>
</Cards>
UserId;Name;SecondName;Number
1;Андрей;Андреев;1_9056938119
2;Андрей;Андреев;2_9056938119
3;Андрей;Андреев;3_9056938119
4;Андрей;Андреев;4_9056938119

Пример итогового файла-отчета:

{
  "Records": [
    {
      "UserId": "1",
      "Pan": "1234123412341231",
      "ExpDate": "10/11/2017",
      "FirstName": "Андрей",
      "LastName": "Андреев",
      "Phone": "1_9056938119"
    },
    {
      "UserId": "2",
      "Pan": "1234123412341232",
      "ExpDate": "20/11/2017",
      "FirstName": "Андрей",
      "LastName": "Андреев",
      "Phone": "2_9056938119"
    },
    {
      "UserId": "3",
      "Pan": "1234123412341233",
      "ExpDate": "30/11/2017",
      "FirstName": "Андрей",
      "LastName": "Андреев",
      "Phone": "3_9056938119"
    },
    {
      "UserId": "4",
      "Pan": "1234123412341234",
      "ExpDate": "24/11/2017",
      "FirstName": "Андрей",
      "LastName": "Андреев",
      "Phone": "4_9056938119"
    }
  ]
}

About

Решение тестового задания. Парсер Xml и Csv в Json.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages