|
@@ -1,16 +1,32 @@
|
|
|
// Программа генерации кода SQL для импорта данных
|
|
|
// Вызывается через консоль, например DontHarmImport.exe <путь к файлу услуг> <путь к файлу пользователей>
|
|
|
|
|
|
+using System.Runtime.Serialization;
|
|
|
+using System.Runtime.Serialization.Json;
|
|
|
using System.Text;
|
|
|
+using System.Text.Json;
|
|
|
|
|
|
namespace DontHarmImport
|
|
|
{
|
|
|
- internal class Program
|
|
|
+ /// <summary>
|
|
|
+ /// JSON представление в файле users.csv
|
|
|
+ /// </summary>
|
|
|
+ [DataContractAttribute]
|
|
|
+ class Service
|
|
|
+ {
|
|
|
+ [DataMember()]
|
|
|
+ public int code { get; set; }
|
|
|
+ }
|
|
|
+
|
|
|
+ class Program
|
|
|
{
|
|
|
static void Main(string[] args)
|
|
|
{
|
|
|
var scrServices = ImportServices(args[0]);
|
|
|
var scrUsers = ImportUsers(args[1]);
|
|
|
+
|
|
|
+ Console.WriteLine(scrServices);
|
|
|
+ Console.WriteLine(scrUsers);
|
|
|
}
|
|
|
|
|
|
static string ImportServices(string path)
|
|
@@ -55,19 +71,47 @@ namespace DontHarmImport
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- var parts = line.Split(";");
|
|
|
- var nameParts = parts[1].Split(",");
|
|
|
- var login = parts[2];
|
|
|
- var password = parts[3];
|
|
|
+ var parts = line.Split(";");
|
|
|
+ var nameParts = parts[1].Split(" ");
|
|
|
+ var login = parts[2];
|
|
|
+ var password = parts[3];
|
|
|
+ var userType = parts[7];
|
|
|
+ var surname = nameParts[1];
|
|
|
+ var name = nameParts[0];
|
|
|
+ var servicesRaw = parts[6];
|
|
|
|
|
|
+ // Создание пользователя
|
|
|
script.AppendLine(
|
|
|
string.Format(
|
|
|
- "INSERT INTO services (name, price, code) VALUES ('{0}', {1}, {2});",
|
|
|
- parts[1],
|
|
|
- parts[2],
|
|
|
- parts[0]
|
|
|
+ "INSERT INTO users (role,login,password,surname,name) VALUES ({0}, '{1}', '{2}', '{3}', '{4}')",
|
|
|
+ userType,
|
|
|
+ login,
|
|
|
+ password,
|
|
|
+ surname,
|
|
|
+ name
|
|
|
)
|
|
|
);
|
|
|
+
|
|
|
+ // Выбор id этого пользователя
|
|
|
+ script.AppendLine("SELECT @inserted_row_id = SCOPE_IDENTITY();");
|
|
|
+
|
|
|
+ // Добавление услуг пользователя
|
|
|
+ string jsonServices = servicesRaw.Substring(1, servicesRaw.Length - 2);
|
|
|
+ using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonServices)))
|
|
|
+ {
|
|
|
+ DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Service>));
|
|
|
+ List<Service> result = (List<Service>)serializer.ReadObject(stream);
|
|
|
+
|
|
|
+ foreach (var service in result)
|
|
|
+ {
|
|
|
+ script.AppendLine(
|
|
|
+ string.Format(
|
|
|
+ "INTO employee_services (service_id, user_id) VALUES ((SELECT id FROM services WHERE code={0}), @inserted_row_id);",
|
|
|
+ service.code
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return script.ToString();
|