diff --git a/Log.txt b/Log.txt new file mode 100644 index 0000000..e69de29 diff --git a/Log20241205.txt b/Log20241205.txt new file mode 100644 index 0000000..3a242dc --- /dev/null +++ b/Log20241205.txt @@ -0,0 +1,508 @@ +2024-12-05 16:59:56.918 +04:00 [INF] Получение всех объектов +2024-12-05 16:59:57.689 +04:00 [DBG] Полученные объекты: [] +2024-12-05 17:00:14.147 +04:00 [INF] Добавление объекта +2024-12-05 17:00:14.203 +04:00 [DBG] Объект: {"Id":0,"AgencyId":1,"FormFactorId":2,"Area":21.0,"PricePerSM":11.0,"BasePrice":231.0,"DesiredPrice":11.0} +2024-12-05 17:00:14.270 +04:00 [INF] Получение всех объектов +2024-12-05 17:00:14.283 +04:00 [DBG] Полученные объекты: [{"Id":5,"AgencyId":0,"FormFactorId":0,"Area":21.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:00:36.942 +04:00 [INF] Получение всех объектов +2024-12-05 17:00:37.478 +04:00 [DBG] Полученные объекты: [{"Id":5,"AgencyId":0,"FormFactorId":0,"Area":21.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:01:51.571 +04:00 [INF] Добавление объекта +2024-12-05 17:01:52.123 +04:00 [DBG] Объект: {"Id":0,"AgencyId":1,"FormFactorId":0,"Area":26.0,"PricePerSM":86.0,"BasePrice":2236.0,"DesiredPrice":6500.0} +2024-12-05 17:02:44.274 +04:00 [INF] Получение всех объектов +2024-12-05 17:02:44.276 +04:00 [DBG] Полученные объекты: [{"Id":5,"AgencyId":0,"FormFactorId":0,"Area":21.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0},{"Id":6,"AgencyId":0,"FormFactorId":0,"Area":26.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:07:30.393 +04:00 [INF] Получение всех объектов +2024-12-05 17:07:30.950 +04:00 [DBG] Полученные объекты: [{"Id":5,"AgencyId":0,"FormFactorId":0,"Area":21.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0},{"Id":6,"AgencyId":0,"FormFactorId":0,"Area":26.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:07:33.920 +04:00 [INF] Удаление объекта +2024-12-05 17:07:33.921 +04:00 [DBG] Объект: 5 +2024-12-05 17:07:33.956 +04:00 [INF] Получение всех объектов +2024-12-05 17:07:33.957 +04:00 [DBG] Полученные объекты: [{"Id":6,"AgencyId":0,"FormFactorId":0,"Area":26.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:07:35.443 +04:00 [INF] Удаление объекта +2024-12-05 17:07:35.443 +04:00 [DBG] Объект: 6 +2024-12-05 17:07:35.447 +04:00 [INF] Получение всех объектов +2024-12-05 17:07:35.449 +04:00 [DBG] Полученные объекты: [] +2024-12-05 17:17:20.736 +04:00 [INF] Получение всех объектов +2024-12-05 17:17:21.264 +04:00 [DBG] Полученные объекты: [] +2024-12-05 17:17:25.463 +04:00 [INF] Добавление объекта +2024-12-05 17:17:25.491 +04:00 [DBG] Объект: {"Id":0,"AgencyId":0,"FormFactorId":0,"Area":1.0,"PricePerSM":1.0,"BasePrice":1.0,"DesiredPrice":1.0} +2024-12-05 17:17:25.552 +04:00 [INF] Получение всех объектов +2024-12-05 17:17:25.560 +04:00 [DBG] Полученные объекты: [{"Id":7,"AgencyId":0,"FormFactorId":0,"Area":1.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:17:28.195 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 17:17:28.196 +04:00 [DBG] Объект: 7 +2024-12-05 17:17:28.206 +04:00 [DBG] Найден объект: {"Id":7,"AgencyId":0,"FormFactorId":0,"Area":1.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0} +2024-12-05 17:17:31.306 +04:00 [INF] Получение всех объектов +2024-12-05 17:17:31.307 +04:00 [DBG] Полученные объекты: [{"Id":7,"AgencyId":0,"FormFactorId":0,"Area":1.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:17:33.992 +04:00 [INF] Удаление объекта +2024-12-05 17:17:33.992 +04:00 [DBG] Объект: 7 +2024-12-05 17:17:33.995 +04:00 [INF] Получение всех объектов +2024-12-05 17:17:33.995 +04:00 [DBG] Полученные объекты: [] +2024-12-05 17:22:17.160 +04:00 [INF] Получение всех объектов +2024-12-05 17:22:17.654 +04:00 [DBG] Полученные объекты: [] +2024-12-05 17:22:21.568 +04:00 [INF] Добавление объекта +2024-12-05 17:22:21.596 +04:00 [DBG] Объект: {"Id":0,"AgencyId":0,"FormFactorId":2,"Area":1.0,"PricePerSM":1.0,"BasePrice":1.0,"DesiredPrice":1.0} +2024-12-05 17:22:21.648 +04:00 [INF] Получение всех объектов +2024-12-05 17:22:21.654 +04:00 [DBG] Полученные объекты: [{"Id":8,"AgencyId":0,"FormFactorId":0,"Area":10.0,"PricePerSM":0.0,"BasePrice":0.0,"DesiredPrice":0.0}] +2024-12-05 17:29:48.090 +04:00 [INF] Получение всех объектов +2024-12-05 17:29:49.070 +04:00 [DBG] Полученные объекты: [{"Id":8,"Agency_ID":1,"Form_factor_ID":0,"Area":10.0,"Price_per_SM":10.0,"Base_price":20.0,"Desired_price":100.0}] +2024-12-05 17:32:27.333 +04:00 [INF] Получение всех объектов +2024-12-05 17:32:27.824 +04:00 [DBG] Полученные объекты: [{"Id":8,"Agency_ID":1,"Form_factor_ID":0,"Area":10.0,"Price_per_SM":10.0,"Base_price":20.0,"Desired_price":100.0}] +2024-12-05 17:32:38.785 +04:00 [INF] Добавление объекта +2024-12-05 17:32:38.785 +04:00 [DBG] Объект: {"Id":0,"Agency_ID":0,"Form_factor_ID":5,"Area":6.0,"Price_per_SM":11.0,"Base_price":66.0,"Desired_price":16.0} +2024-12-05 17:32:38.860 +04:00 [INF] Получение всех объектов +2024-12-05 17:32:38.861 +04:00 [DBG] Полученные объекты: [{"Id":8,"Agency_ID":1,"Form_factor_ID":0,"Area":10.0,"Price_per_SM":10.0,"Base_price":20.0,"Desired_price":100.0},{"Id":9,"Agency_ID":0,"Form_factor_ID":5,"Area":6.0,"Price_per_SM":11.0,"Base_price":66.0,"Desired_price":16.0}] +2024-12-05 17:32:43.587 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 17:32:43.587 +04:00 [DBG] Объект: 9 +2024-12-05 17:32:43.597 +04:00 [DBG] Найден объект: {"Id":9,"Agency_ID":0,"Form_factor_ID":5,"Area":6.0,"Price_per_SM":11.0,"Base_price":66.0,"Desired_price":16.0} +2024-12-05 17:32:45.444 +04:00 [INF] Получение всех объектов +2024-12-05 17:32:45.446 +04:00 [DBG] Полученные объекты: [{"Id":8,"Agency_ID":1,"Form_factor_ID":0,"Area":10.0,"Price_per_SM":10.0,"Base_price":20.0,"Desired_price":100.0},{"Id":9,"Agency_ID":0,"Form_factor_ID":5,"Area":6.0,"Price_per_SM":11.0,"Base_price":66.0,"Desired_price":16.0}] +2024-12-05 17:32:48.494 +04:00 [INF] Удаление объекта +2024-12-05 17:32:48.495 +04:00 [DBG] Объект: 8 +2024-12-05 17:32:48.508 +04:00 [INF] Получение всех объектов +2024-12-05 17:32:48.509 +04:00 [DBG] Полученные объекты: [{"Id":9,"Agency_ID":0,"Form_factor_ID":5,"Area":6.0,"Price_per_SM":11.0,"Base_price":66.0,"Desired_price":16.0}] +2024-12-05 17:32:49.942 +04:00 [INF] Удаление объекта +2024-12-05 17:32:49.942 +04:00 [DBG] Объект: 9 +2024-12-05 17:32:49.944 +04:00 [INF] Получение всех объектов +2024-12-05 17:32:49.946 +04:00 [DBG] Полученные объекты: [] +2024-12-05 19:43:56.621 +04:00 [INF] Получение всех объектов +2024-12-05 19:43:57.328 +04:00 [DBG] Полученные объекты: [] +2024-12-05 19:44:15.217 +04:00 [INF] Добавление объекта +2024-12-05 19:44:15.264 +04:00 [DBG] Объект: {"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638} +2024-12-05 19:44:15.333 +04:00 [INF] Получение всех объектов +2024-12-05 19:44:15.341 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638}] +2024-12-05 19:44:19.531 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 19:44:19.531 +04:00 [DBG] Объект: 0 +2024-12-05 19:44:19.539 +04:00 [DBG] Найден объект: {"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638} +2024-12-05 19:44:21.942 +04:00 [INF] Получение всех объектов +2024-12-05 19:44:21.944 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638}] +2024-12-05 19:44:22.648 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 19:44:22.648 +04:00 [DBG] Объект: 0 +2024-12-05 19:44:22.649 +04:00 [DBG] Найден объект: {"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638} +2024-12-05 19:44:23.892 +04:00 [INF] Получение всех объектов +2024-12-05 19:44:23.893 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"GBkfdfkfsdkgdf jdfgk","Passport_series":1117,"Passport_number":526638}] +2024-12-05 19:44:25.843 +04:00 [INF] Удаление объекта +2024-12-05 19:44:25.843 +04:00 [DBG] Объект: 0 +2024-12-05 19:44:25.855 +04:00 [INF] Получение всех объектов +2024-12-05 19:44:25.856 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:00:11.058 +04:00 [INF] Получение всех объектов +2024-12-05 20:00:11.605 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:00:21.200 +04:00 [INF] Добавление объекта +2024-12-05 20:00:21.232 +04:00 [DBG] Объект: {"Id":0,"Name":"fghkdf","Price":220.0} +2024-12-05 20:00:21.290 +04:00 [INF] Получение всех объектов +2024-12-05 20:00:21.303 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:00:23.491 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:00:23.492 +04:00 [DBG] Объект: 1 +2024-12-05 20:00:23.501 +04:00 [DBG] Найден объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:00:26.744 +04:00 [INF] Редактирование объекта +2024-12-05 20:00:26.744 +04:00 [DBG] Объект: {"Id":1,"Name":"sdfwdf","Price":220.0} +2024-12-05 20:00:26.863 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Price") + +POSITION: 48 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ServicesRepository.UpdateService(Services service) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ServicesRepository.cs:line 112 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Price") + Position: 48 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:00:34.050 +04:00 [INF] Редактирование объекта +2024-12-05 20:00:34.050 +04:00 [DBG] Объект: {"Id":1,"Name":"sdfwdf","Price":220.0} +2024-12-05 20:00:34.117 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Price") + +POSITION: 48 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ServicesRepository.UpdateService(Services service) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ServicesRepository.cs:line 112 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Price") + Position: 48 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:00:39.490 +04:00 [INF] Получение всех объектов +2024-12-05 20:00:39.491 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:01:49.928 +04:00 [INF] Получение всех объектов +2024-12-05 20:01:50.482 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:01:51.790 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:01:51.791 +04:00 [DBG] Объект: 1 +2024-12-05 20:01:51.822 +04:00 [DBG] Найден объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:01:57.288 +04:00 [INF] Редактирование объекта +2024-12-05 20:01:57.288 +04:00 [DBG] Объект: {"Id":1,"Name":"Hort","Price":220.0} +2024-12-05 20:01:57.365 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Price") + +POSITION: 44 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ServicesRepository.UpdateService(Services service) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ServicesRepository.cs:line 112 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Price") + Position: 44 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:02:02.731 +04:00 [INF] Получение всех объектов +2024-12-05 20:02:02.732 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:02:29.837 +04:00 [INF] Получение всех объектов +2024-12-05 20:02:30.429 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:02:31.521 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:02:31.522 +04:00 [DBG] Объект: 1 +2024-12-05 20:02:31.547 +04:00 [DBG] Найден объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:02:32.781 +04:00 [INF] Редактирование объекта +2024-12-05 20:02:32.781 +04:00 [DBG] Объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:02:32.873 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Price") + +POSITION: 44 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ServicesRepository.UpdateService(Services service) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ServicesRepository.cs:line 112 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Price") + Position: 44 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:02:46.517 +04:00 [INF] Получение всех объектов +2024-12-05 20:02:46.518 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:02:57.926 +04:00 [INF] Добавление объекта +2024-12-05 20:02:57.926 +04:00 [DBG] Объект: {"Id":0,"Name":"first","Price":520.0} +2024-12-05 20:02:57.938 +04:00 [INF] Получение всех объектов +2024-12-05 20:02:57.939 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0},{"Id":2,"Name":"first","Price":520.0}] +2024-12-05 20:03:00.997 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:03:00.997 +04:00 [DBG] Объект: 2 +2024-12-05 20:03:00.999 +04:00 [DBG] Найден объект: {"Id":2,"Name":"first","Price":520.0} +2024-12-05 20:03:05.265 +04:00 [INF] Редактирование объекта +2024-12-05 20:03:05.265 +04:00 [DBG] Объект: {"Id":2,"Name":"sec","Price":520.0} +2024-12-05 20:03:05.340 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Price") + +POSITION: 44 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ServicesRepository.UpdateService(Services service) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ServicesRepository.cs:line 112 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Price") + Position: 44 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:03:30.505 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:30.506 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0},{"Id":2,"Name":"first","Price":520.0}] +2024-12-05 20:03:33.953 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:33.955 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:03:38.627 +04:00 [INF] Добавление объекта +2024-12-05 20:03:38.629 +04:00 [DBG] Объект: {"Id":0,"Full_name":"sdghkdnkff","Passport_series":1111,"Passport_number":111111} +2024-12-05 20:03:38.642 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:38.644 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"sdghkdnkff","Passport_series":1111,"Passport_number":111111}] +2024-12-05 20:03:40.297 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:03:40.298 +04:00 [DBG] Объект: 0 +2024-12-05 20:03:40.299 +04:00 [DBG] Найден объект: {"Id":0,"Full_name":"sdghkdnkff","Passport_series":1111,"Passport_number":111111} +2024-12-05 20:03:42.867 +04:00 [INF] Редактирование объекта +2024-12-05 20:03:42.868 +04:00 [DBG] Объект: {"Id":0,"Full_name":"sdnfjwe","Passport_series":1111,"Passport_number":111111} +2024-12-05 20:03:42.922 +04:00 [DBG] Ошибка при редактировании объекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Passport_series") + +POSITION: 46 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.BuyerRepository.UpdateBuyer(Buyer buyer) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\BuyerRepository.cs:line 113 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Passport_series") + Position: 46 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:03:48.372 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:48.373 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"sdghkdnkff","Passport_series":1111,"Passport_number":111111}] +2024-12-05 20:03:50.289 +04:00 [INF] Удаление объекта +2024-12-05 20:03:50.289 +04:00 [DBG] Объект: 0 +2024-12-05 20:03:50.292 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:50.292 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:03:54.390 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:54.396 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:03:59.278 +04:00 [INF] Добавление объекта +2024-12-05 20:03:59.280 +04:00 [DBG] Объект: {"Id":0,"Agency_ID":0,"Form_factor_ID":1,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:03:59.296 +04:00 [INF] Получение всех объектов +2024-12-05 20:03:59.299 +04:00 [DBG] Полученные объекты: [{"Id":10,"Agency_ID":0,"Form_factor_ID":1,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:04:00.490 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:04:00.491 +04:00 [DBG] Объект: 10 +2024-12-05 20:04:00.492 +04:00 [DBG] Найден объект: {"Id":10,"Agency_ID":0,"Form_factor_ID":1,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:04:03.245 +04:00 [INF] Редактирование объекта +2024-12-05 20:04:03.246 +04:00 [DBG] Объект: {"Id":10,"Agency_ID":0,"Form_factor_ID":1,"Area":1.0,"Price_per_SM":16.0,"Base_price":16.0,"Desired_price":1.0} +2024-12-05 20:04:03.308 +04:00 [ERR] Ошибка при редактировании оьъекта +Npgsql.PostgresException (0x80004005): 42601: ошибка синтаксиса (примерное положение: "Form_Factor_ID") + +POSITION: 56 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ApartmentRepository.UpdateApartment(Apartment apartment) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ApartmentRepository.cs:line 56 + Exception data: + Severity: ОШИБКА + SqlState: 42601 + MessageText: ошибка синтаксиса (примерное положение: "Form_Factor_ID") + Position: 56 + File: scan.l + Line: 1246 + Routine: scanner_yyerror +2024-12-05 20:04:06.539 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:06.540 +04:00 [DBG] Полученные объекты: [{"Id":10,"Agency_ID":0,"Form_factor_ID":1,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:04:08.058 +04:00 [INF] Удаление объекта +2024-12-05 20:04:08.058 +04:00 [DBG] Объект: 10 +2024-12-05 20:04:08.062 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:08.062 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:04:28.344 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:28.835 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0},{"Id":2,"Name":"first","Price":520.0}] +2024-12-05 20:04:29.887 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:04:29.887 +04:00 [DBG] Объект: 1 +2024-12-05 20:04:29.913 +04:00 [DBG] Найден объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:04:30.882 +04:00 [INF] Редактирование объекта +2024-12-05 20:04:30.882 +04:00 [DBG] Объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:04:30.922 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:30.923 +04:00 [DBG] Полученные объекты: [{"Id":2,"Name":"first","Price":520.0},{"Id":1,"Name":"fghkdf","Price":220.0}] +2024-12-05 20:04:34.753 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:04:34.753 +04:00 [DBG] Объект: 2 +2024-12-05 20:04:34.754 +04:00 [DBG] Найден объект: {"Id":2,"Name":"first","Price":520.0} +2024-12-05 20:04:37.974 +04:00 [INF] Редактирование объекта +2024-12-05 20:04:37.974 +04:00 [DBG] Объект: {"Id":2,"Name":"fkbnkdfk","Price":520.0} +2024-12-05 20:04:37.986 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:37.987 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"fghkdf","Price":220.0},{"Id":2,"Name":"fkbnkdfk","Price":520.0}] +2024-12-05 20:04:42.719 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:04:42.719 +04:00 [DBG] Объект: 1 +2024-12-05 20:04:42.721 +04:00 [DBG] Найден объект: {"Id":1,"Name":"fghkdf","Price":220.0} +2024-12-05 20:04:50.117 +04:00 [INF] Редактирование объекта +2024-12-05 20:04:50.117 +04:00 [DBG] Объект: {"Id":1,"Name":"first","Price":220.0} +2024-12-05 20:04:50.124 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:50.125 +04:00 [DBG] Полученные объекты: [{"Id":2,"Name":"fkbnkdfk","Price":520.0},{"Id":1,"Name":"first","Price":220.0}] +2024-12-05 20:04:54.649 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:04:54.649 +04:00 [DBG] Объект: 2 +2024-12-05 20:04:54.651 +04:00 [DBG] Найден объект: {"Id":2,"Name":"fkbnkdfk","Price":520.0} +2024-12-05 20:04:59.205 +04:00 [INF] Редактирование объекта +2024-12-05 20:04:59.205 +04:00 [DBG] Объект: {"Id":2,"Name":"second","Price":520.0} +2024-12-05 20:04:59.212 +04:00 [INF] Получение всех объектов +2024-12-05 20:04:59.213 +04:00 [DBG] Полученные объекты: [{"Id":1,"Name":"first","Price":220.0},{"Id":2,"Name":"second","Price":520.0}] +2024-12-05 20:05:02.797 +04:00 [INF] Удаление объекта +2024-12-05 20:05:02.797 +04:00 [DBG] Объект: 1 +2024-12-05 20:05:02.803 +04:00 [INF] Получение всех объектов +2024-12-05 20:05:02.804 +04:00 [DBG] Полученные объекты: [{"Id":2,"Name":"second","Price":520.0}] +2024-12-05 20:05:03.469 +04:00 [INF] Удаление объекта +2024-12-05 20:05:03.470 +04:00 [DBG] Объект: 2 +2024-12-05 20:05:03.473 +04:00 [INF] Получение всех объектов +2024-12-05 20:05:03.474 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:05:38.424 +04:00 [INF] Получение всех объектов +2024-12-05 20:05:38.861 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:05:42.852 +04:00 [INF] Добавление объекта +2024-12-05 20:05:42.888 +04:00 [DBG] Объект: {"Id":0,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:05:42.946 +04:00 [INF] Получение всех объектов +2024-12-05 20:05:42.955 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:05:44.252 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:05:44.253 +04:00 [DBG] Объект: 11 +2024-12-05 20:05:44.261 +04:00 [DBG] Найден объект: {"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:05:49.571 +04:00 [INF] Редактирование объекта +2024-12-05 20:05:49.571 +04:00 [DBG] Объект: {"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":16.0,"Price_per_SM":16.0,"Base_price":256.0,"Desired_price":31.0} +2024-12-05 20:05:49.643 +04:00 [ERR] Ошибка при редактировании оьъекта +Npgsql.PostgresException (0x80004005): 42703: столбец "agenceid" не существует + +POSITION: 42 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ApartmentRepository.UpdateApartment(Apartment apartment) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ApartmentRepository.cs:line 56 + Exception data: + Severity: ОШИБКА + SqlState: 42703 + MessageText: столбец "agenceid" не существует + Hint: Возможно, предполагалась ссылка на столбец "apartment.agency_id". + Position: 42 + File: parse_relation.c + Line: 3738 + Routine: errorMissingColumn +2024-12-05 20:05:59.358 +04:00 [INF] Получение всех объектов +2024-12-05 20:05:59.359 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:06:58.734 +04:00 [INF] Получение всех объектов +2024-12-05 20:06:59.332 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:07:00.769 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:07:00.769 +04:00 [DBG] Объект: 11 +2024-12-05 20:07:00.800 +04:00 [DBG] Найден объект: {"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:07:06.589 +04:00 [INF] Редактирование объекта +2024-12-05 20:07:06.589 +04:00 [DBG] Объект: {"Id":11,"Agency_ID":0,"Form_factor_ID":3,"Area":16.0,"Price_per_SM":16.0,"Base_price":256.0,"Desired_price":1.0} +2024-12-05 20:07:06.674 +04:00 [ERR] Ошибка при редактировании оьъекта +Npgsql.PostgresException (0x80004005): 42703: столбец "agencyid" в таблице "apartment" не существует + +POSITION: 30 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult() + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteNonQuery() + at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965 + at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656 + at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527 + at RealEstateTransactions.Repositories.Implementations.ApartmentRepository.UpdateApartment(Apartment apartment) in C:\my\курс 2 сим 1\ОТП\Lab\RealEstateTransactions\RealEstateTransactions\Repositories\Implementations\ApartmentRepository.cs:line 56 + Exception data: + Severity: ОШИБКА + SqlState: 42703 + MessageText: столбец "agencyid" в таблице "apartment" не существует + Position: 30 + File: analyze.c + Line: 2532 + Routine: transformUpdateTargetList +2024-12-05 20:07:16.900 +04:00 [INF] Получение всех объектов +2024-12-05 20:07:16.901 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:07:44.755 +04:00 [INF] Получение всех объектов +2024-12-05 20:07:45.283 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0}] +2024-12-05 20:07:46.999 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:07:46.999 +04:00 [DBG] Объект: 11 +2024-12-05 20:07:47.028 +04:00 [DBG] Найден объект: {"Id":11,"Agency_ID":0,"Form_factor_ID":2,"Area":1.0,"Price_per_SM":1.0,"Base_price":1.0,"Desired_price":1.0} +2024-12-05 20:07:57.018 +04:00 [INF] Редактирование объекта +2024-12-05 20:07:57.018 +04:00 [DBG] Объект: {"Id":11,"Agency_ID":1,"Form_factor_ID":6,"Area":16.0,"Price_per_SM":16.0,"Base_price":256.0,"Desired_price":1.0} +2024-12-05 20:07:57.050 +04:00 [INF] Получение всех объектов +2024-12-05 20:07:57.052 +04:00 [DBG] Полученные объекты: [{"Id":11,"Agency_ID":1,"Form_factor_ID":6,"Area":16.0,"Price_per_SM":16.0,"Base_price":256.0,"Desired_price":1.0}] +2024-12-05 20:08:01.777 +04:00 [INF] Удаление объекта +2024-12-05 20:08:01.777 +04:00 [DBG] Объект: 11 +2024-12-05 20:08:01.781 +04:00 [INF] Получение всех объектов +2024-12-05 20:08:01.782 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:08:05.937 +04:00 [INF] Получение всех объектов +2024-12-05 20:08:05.940 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:08:26.632 +04:00 [INF] Добавление объекта +2024-12-05 20:08:26.637 +04:00 [DBG] Объект: {"Id":0,"Full_name":"Gthsdlff sarff gosd ","Passport_series":9999,"Passport_number":335588} +2024-12-05 20:08:26.649 +04:00 [INF] Получение всех объектов +2024-12-05 20:08:26.653 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"Gthsdlff sarff gosd ","Passport_series":9999,"Passport_number":335588}] +2024-12-05 20:08:29.152 +04:00 [INF] Получение объекта по идентификатору +2024-12-05 20:08:29.153 +04:00 [DBG] Объект: 0 +2024-12-05 20:08:29.154 +04:00 [DBG] Найден объект: {"Id":0,"Full_name":"Gthsdlff sarff gosd ","Passport_series":9999,"Passport_number":335588} +2024-12-05 20:08:35.113 +04:00 [INF] Редактирование объекта +2024-12-05 20:08:35.113 +04:00 [DBG] Объект: {"Id":0,"Full_name":"FF rtih eo ","Passport_series":9999,"Passport_number":335588} +2024-12-05 20:08:35.122 +04:00 [INF] Получение всех объектов +2024-12-05 20:08:35.123 +04:00 [DBG] Полученные объекты: [{"Id":0,"Full_name":"FF rtih eo ","Passport_series":9999,"Passport_number":335588}] +2024-12-05 20:08:38.123 +04:00 [INF] Удаление объекта +2024-12-05 20:08:38.123 +04:00 [DBG] Объект: 0 +2024-12-05 20:08:38.125 +04:00 [INF] Получение всех объектов +2024-12-05 20:08:38.126 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:09.105 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:09.572 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:11.124 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:11.134 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:14.963 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:14.964 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:17.707 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:17.708 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:42.786 +04:00 [INF] Добавление объекта +2024-12-05 20:15:42.802 +04:00 [DBG] Объект: {"Id":0,"Agency_ID":1,"Form_factor_ID":1,"Area":16.0,"Price_per_SM":5000.0,"Base_price":80000.0,"Desired_price":100000.0} +2024-12-05 20:15:42.837 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:42.848 +04:00 [DBG] Полученные объекты: [{"Id":12,"Agency_ID":1,"Form_factor_ID":1,"Area":16.0,"Price_per_SM":5000.0,"Base_price":80000.0,"Desired_price":100000.0}] +2024-12-05 20:15:46.776 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:46.777 +04:00 [DBG] Полученные объекты: [] +2024-12-05 20:15:48.409 +04:00 [INF] Получение всех объектов +2024-12-05 20:15:48.410 +04:00 [DBG] Полученные объекты: [{"Id":12,"Agency_ID":1,"Form_factor_ID":1,"Area":16.0,"Price_per_SM":5000.0,"Base_price":80000.0,"Desired_price":100000.0}] +2024-12-05 20:16:05.117 +04:00 [INF] Добавление объекта +2024-12-05 20:16:05.122 +04:00 [DBG] Объект: {"Id":0,"Apartment_ID":12,"Name":"XXXXx","Cost":54545.0} +2024-12-05 20:16:05.136 +04:00 [INF] Получение всех объектов +2024-12-05 20:16:05.139 +04:00 [DBG] Полученные объекты: [{"Id":1,"Apartment_ID":12,"Name":"XXXXx","Cost":54545.0}] +2024-12-05 20:16:08.613 +04:00 [INF] Получение всех объектов +2024-12-05 20:16:08.614 +04:00 [DBG] Полученные объекты: [{"Id":12,"Agency_ID":1,"Form_factor_ID":1,"Area":16.0,"Price_per_SM":5000.0,"Base_price":80000.0,"Desired_price":100000.0}] +2024-12-05 20:16:15.877 +04:00 [INF] Добавление объекта +2024-12-05 20:16:15.877 +04:00 [DBG] Объект: {"Id":0,"Apartment_ID":12,"Name":"fgnj","Cost":1000000.0} +2024-12-05 20:16:15.892 +04:00 [INF] Получение всех объектов +2024-12-05 20:16:15.893 +04:00 [DBG] Полученные объекты: [{"Id":1,"Apartment_ID":12,"Name":"XXXXx","Cost":54545.0},{"Id":2,"Apartment_ID":12,"Name":"fgnj","Cost":1000000.0}] +2024-12-05 20:16:19.405 +04:00 [INF] Удаление объекта +2024-12-05 20:16:19.405 +04:00 [DBG] Объект: 1 +2024-12-05 20:16:19.409 +04:00 [INF] Получение всех объектов +2024-12-05 20:16:19.410 +04:00 [DBG] Полученные объекты: [{"Id":2,"Apartment_ID":12,"Name":"fgnj","Cost":1000000.0}] diff --git a/RealEstateTransactions/RealEstateTransactions/Entities/Apartment.cs b/RealEstateTransactions/RealEstateTransactions/Entities/Apartment.cs index 4046422..e5d8419 100644 --- a/RealEstateTransactions/RealEstateTransactions/Entities/Apartment.cs +++ b/RealEstateTransactions/RealEstateTransactions/Entities/Apartment.cs @@ -6,17 +6,17 @@ namespace RealEstateTransactions.Entities { public int Id { get; private set; } - public AgencyType AgencyId { get; private set; } + public AgencyType Agency_ID { get; private set; } - public FormFactorType FormFactorId { get; private set; } + public FormFactorType Form_factor_ID { get; private set; } public float Area { get; private set; } - public float PricePerSM { get; private set; } + public float Price_per_SM { get; private set; } - public float BasePrice { get; private set; } + public float Base_price { get; private set; } - public float DesiredPrice { get; private set; } + public float Desired_price { get; private set; } public static Apartment CreateApartment(int id, AgencyType agencyId, FormFactorType formFactorId, float area, float pricePerSM, float basePrice, float desiredPrice) @@ -24,12 +24,12 @@ namespace RealEstateTransactions.Entities return new Apartment { Id = id, - AgencyId = agencyId, - FormFactorId = formFactorId, + Agency_ID = agencyId, + Form_factor_ID = formFactorId, Area = area, - PricePerSM = pricePerSM, - BasePrice = basePrice, - DesiredPrice = desiredPrice + Price_per_SM = pricePerSM, + Base_price = basePrice, + Desired_price = desiredPrice }; } } diff --git a/RealEstateTransactions/RealEstateTransactions/Entities/Buyer.cs b/RealEstateTransactions/RealEstateTransactions/Entities/Buyer.cs index 567ef9b..5b264be 100644 --- a/RealEstateTransactions/RealEstateTransactions/Entities/Buyer.cs +++ b/RealEstateTransactions/RealEstateTransactions/Entities/Buyer.cs @@ -4,20 +4,20 @@ { public int Id { get; private set; } - public string FullName { get; private set; } = string.Empty; + public string Full_name { get; private set; } = string.Empty; - public int PassportSeries { get; private set; } + public int Passport_series { get; private set; } - public int PassportNumber { get; private set; } + public int Passport_number { get; private set; } public static Buyer CreateBuyer(int id, string fullName, int passportSeries, int passportNumber) { return new Buyer { Id = id, - FullName = fullName, - PassportSeries = passportSeries, - PassportNumber = passportNumber + Full_name = fullName, + Passport_series = passportSeries, + Passport_number = passportNumber }; } } diff --git a/RealEstateTransactions/RealEstateTransactions/Entities/Deal.cs b/RealEstateTransactions/RealEstateTransactions/Entities/Deal.cs index b634918..1d1897c 100644 --- a/RealEstateTransactions/RealEstateTransactions/Entities/Deal.cs +++ b/RealEstateTransactions/RealEstateTransactions/Entities/Deal.cs @@ -4,13 +4,13 @@ { public int Id { get; private set; } - public int ApartmentId { get; private set; } + public int Apartment_ID { get; private set; } - public int BuyerId { get; private set; } + public int Buyer_ID { get; private set; } - public float DealPrice { get; private set; } + public float Deal_price { get; private set; } - public DateTime DealDate { get; private set; } + public DateTime Deal_date { get; private set; } public IEnumerable DealServices { get; private set; } = []; @@ -20,10 +20,10 @@ return new Deal { Id = id, - ApartmentId = apartmentId, - BuyerId = buyerId, - DealPrice = dealPrice, - DealDate = dealDate, + Apartment_ID = apartmentId, + Buyer_ID = buyerId, + Deal_price = dealPrice, + Deal_date = dealDate, DealServices = dealServices }; } diff --git a/RealEstateTransactions/RealEstateTransactions/Entities/PreSalesServices.cs b/RealEstateTransactions/RealEstateTransactions/Entities/PreSalesServices.cs index 12b1549..183a597 100644 --- a/RealEstateTransactions/RealEstateTransactions/Entities/PreSalesServices.cs +++ b/RealEstateTransactions/RealEstateTransactions/Entities/PreSalesServices.cs @@ -4,7 +4,7 @@ { public int Id { get; private set; } - public int ApartmentId { get; private set; } + public int Apartment_ID { get; private set; } public string Name { get; private set; } = string.Empty; @@ -15,7 +15,7 @@ return new PreSalesServices { Id = id, - ApartmentId = apartmentId, + Apartment_ID = apartmentId, Name = name, Cost = cost }; diff --git a/RealEstateTransactions/RealEstateTransactions/Entities/ServicesDeal.cs b/RealEstateTransactions/RealEstateTransactions/Entities/ServicesDeal.cs index 950156c..517a440 100644 --- a/RealEstateTransactions/RealEstateTransactions/Entities/ServicesDeal.cs +++ b/RealEstateTransactions/RealEstateTransactions/Entities/ServicesDeal.cs @@ -2,19 +2,19 @@ { public class ServicesDeal { - public int ServicesId { get; private set; } + public int Services_ID { get; private set; } - public int DealId { get; private set; } + public int Deal_ID { get; private set; } - public float ExecutionTime { get; private set; } + public float Execution_time { get; private set; } public static ServicesDeal CreateServicesDeal(int servicesId, int dealId, float executionTime) { return new ServicesDeal { - ServicesId = servicesId, - DealId = dealId, - ExecutionTime = executionTime + Services_ID = servicesId, + Deal_ID = dealId, + Execution_time = executionTime }; } } diff --git a/RealEstateTransactions/RealEstateTransactions/Forms/FormApartment.cs b/RealEstateTransactions/RealEstateTransactions/Forms/FormApartment.cs index b00f3b7..f397170 100644 --- a/RealEstateTransactions/RealEstateTransactions/Forms/FormApartment.cs +++ b/RealEstateTransactions/RealEstateTransactions/Forms/FormApartment.cs @@ -22,15 +22,15 @@ namespace RealEstateTransactions.Forms foreach (FormFactorType elem in Enum.GetValues(typeof(FormFactorType))) { - if ((elem & apartment.FormFactorId) != 0) + if ((elem & apartment.Form_factor_ID) != 0) checkedListBoxFormFactor.SetItemChecked(checkedListBoxFormFactor.Items.IndexOf(elem), true); } - comboBoxAgency.SelectedIndex = (int)apartment.AgencyId; + comboBoxAgency.SelectedIndex = (int)apartment.Agency_ID; numericUpDownArea.Value = (decimal)apartment.Area; - numericUpDownPricePerSM.Value = (decimal)apartment.PricePerSM; - numericUpDownBasePrice.Value = (decimal)apartment.BasePrice; - numericUpDownDesiredPrice.Value = (decimal)apartment.DesiredPrice; + numericUpDownPricePerSM.Value = (decimal)apartment.Price_per_SM; + numericUpDownBasePrice.Value = (decimal)apartment.Base_price; + numericUpDownDesiredPrice.Value = (decimal)apartment.Desired_price; _apartmentId = value; } diff --git a/RealEstateTransactions/RealEstateTransactions/Forms/FormBuyer.cs b/RealEstateTransactions/RealEstateTransactions/Forms/FormBuyer.cs index 985fa56..475904c 100644 --- a/RealEstateTransactions/RealEstateTransactions/Forms/FormBuyer.cs +++ b/RealEstateTransactions/RealEstateTransactions/Forms/FormBuyer.cs @@ -19,9 +19,9 @@ namespace RealEstateTransactions.Forms if (buyer == null) throw new InvalidDataException(nameof(buyer)); - textBoxFullName.Text = buyer.FullName; - numericUpDownPassportSeries.Value = buyer.PassportSeries; - numericUpDownPassportNumber.Value = buyer.PassportNumber; + textBoxFullName.Text = buyer.Full_name; + numericUpDownPassportSeries.Value = buyer.Passport_series; + numericUpDownPassportNumber.Value = buyer.Passport_number; _buyerId = value; } diff --git a/RealEstateTransactions/RealEstateTransactions/Program.cs b/RealEstateTransactions/RealEstateTransactions/Program.cs index cef90b1..8b7d9c0 100644 --- a/RealEstateTransactions/RealEstateTransactions/Program.cs +++ b/RealEstateTransactions/RealEstateTransactions/Program.cs @@ -1,6 +1,10 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; using RealEstateTransactions.Repositories; using RealEstateTransactions.Repositories.Implementations; +using Serilog; using Unity; +using Unity.Microsoft.Logging; namespace RealEstateTransactions { @@ -28,8 +32,24 @@ namespace RealEstateTransactions container.RegisterType(); container.RegisterType(); container.RegisterType(); + container.RegisterType(); + + container.AddExtension(new LoggingExtension(CreateLoggerFactory())); return container; } + + private static LoggerFactory CreateLoggerFactory() + { + var loggerFactory = new LoggerFactory(); + loggerFactory.AddSerilog(new LoggerConfiguration() + .ReadFrom.Configuration(new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build()) + .CreateLogger()); + return loggerFactory; + } + } } \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/RealEstateTransactions.csproj b/RealEstateTransactions/RealEstateTransactions/RealEstateTransactions.csproj index accbdf0..b94bfad 100644 --- a/RealEstateTransactions/RealEstateTransactions/RealEstateTransactions.csproj +++ b/RealEstateTransactions/RealEstateTransactions/RealEstateTransactions.csproj @@ -9,7 +9,18 @@ + + + + + + + + + + + @@ -27,4 +38,10 @@ + + + PreserveNewest + + + \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/IConnectionString.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/IConnectionString.cs new file mode 100644 index 0000000..1424bc7 --- /dev/null +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/IConnectionString.cs @@ -0,0 +1,7 @@ +namespace RealEstateTransactions.Repositories +{ + public interface IConnectionString + { + string ConnectionString { get; } + } +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/IDealRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/IDealRepository.cs index 7d37e4c..fca26ee 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/IDealRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/IDealRepository.cs @@ -4,14 +4,11 @@ namespace RealEstateTransactions.Repositories { public interface IDealRepository { - IEnumerable ReadDeals(); - - Deal ReadDeal(int id); + IEnumerable ReadDeals(DateTime? dateForm = null, DateTime? dateTo = null, + int? servicesID = null, int? dealID = null); void CreateDeal(Deal deal); - void UpdateDeal(Deal deal); - void DeleteDeal(int id); } } \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ApartmentRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ApartmentRepository.cs index 9ee9018..1c4ab7f 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ApartmentRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ApartmentRepository.cs @@ -1,38 +1,125 @@ -using RealEstateTransactions.Entities; -using RealEstateTransactions.Entities.Enums; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using RealEstateTransactions.Entities; +using Npgsql; namespace RealEstateTransactions.Repositories.Implementations { public class ApartmentRepository : IApartmentRepository { - public Apartment ReadApartment(int id) - { - return Apartment.CreateApartment(0, AgencyType.None, FormFactorType.None, 0, 0, 0, 0); - } + private readonly IConnectionString _connectionString; - public IEnumerable ReadApartments() + private readonly ILogger _logger; + + public ApartmentRepository(IConnectionString connectionString, ILogger logger) { - return []; + _connectionString = connectionString; + _logger = logger; } public void CreateApartment(Apartment apartment) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(apartment)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var insertQuery = @" +INSERT INTO Apartment (Agency_ID, Form_factor_ID, Area, Price_per_SM, Base_price, Desired_price) +VALUES (@Agency_ID, @Form_factor_ID, @Area, @Price_per_SM, @Base_price, @Desired_price)"; + connection.Execute(insertQuery, apartment); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + public void UpdateApartment(Apartment apartment) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(apartment)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var updateQuery = @" +UPDATE Apartment +SET + Agency_ID = @Agency_ID, + Form_Factor_ID = @Form_factor_ID, + Area = @Area, + Price_per_SM = @Price_per_SM, + Base_price = @Base_price, + Desired_price = @Desired_price +WHERE Id = @Id"; + connection.Execute(updateQuery, apartment); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании оьъекта"); + throw; + } + } + + public Apartment ReadApartment(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = @" +SELECT * +FROM Apartment +WHERE ID = @id"; + var apartment = connection.QueryFirst(selectQuery, new { id }); + _logger.LogDebug("Найден объект: {json}", JsonConvert.SerializeObject(apartment)); + return apartment; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public IEnumerable ReadApartments() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = @"SELECT * FROM Apartment"; + var apartments = connection.Query(selectQuery); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(apartments)); + return apartments; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } public void DeleteApartment(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var deleteQuery = @" +DELETE FROM Apartment +WHERE ID = @id"; + connection.Execute(deleteQuery, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } - public void UpdateApartment(Apartment apartment) - { - - } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/BuyerRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/BuyerRepository.cs index f67c262..2bdd761 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/BuyerRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/BuyerRepository.cs @@ -1,38 +1,122 @@ -using RealEstateTransactions.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Metadata.Ecma335; -using System.Text; -using System.Threading.Tasks; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RealEstateTransactions.Entities; namespace RealEstateTransactions.Repositories.Implementations { public class BuyerRepository : IBuyerRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public BuyerRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateBuyer(Buyer buyer) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(buyer)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var insertQuery = @" +INSERT INTO Buyer (ID, Full_name, Passport_series, Passport_number) +VALUES (@Id, @Full_name, @Passport_series, @Passport_number)"; + connection.Execute(insertQuery, buyer); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteBuyer(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var deleteQuery = @" +DELETE FROM Buyer +WHERE Id = @id"; + connection.Execute(deleteQuery, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public Buyer ReadBuyer(int id) { - return Buyer.CreateBuyer(0, "", 0, 0); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = @" +SELECT * +FROM Buyer +WHERE Id = @id"; + var buyer = connection.QueryFirst(selectQuery, new { id }); + _logger.LogDebug("Найден объект: {json}", JsonConvert.SerializeObject(buyer)); + return buyer; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } } public IEnumerable ReadBuyers() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = "SELECT * FROM Buyer"; + var buyers = connection.Query(selectQuery); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(buyers)); + return buyers; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } public void UpdateBuyer(Buyer buyer) { - + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(buyer)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var updateQuery = @" +UPDATE Buyer +SET + Full_name = @Full_name, + Passport_series = @Passport_series, + Passport_number = @Passport_number +WHERE Id = @Id"; + connection.Execute(updateQuery, buyer); + } + catch (Exception ex) + { + _logger.LogDebug(ex, "Ошибка при редактировании объекта"); + throw; + } } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ConnectionString.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ConnectionString.cs new file mode 100644 index 0000000..099b3fe --- /dev/null +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ConnectionString.cs @@ -0,0 +1,7 @@ +namespace RealEstateTransactions.Repositories.Implementations +{ + public class ConnectionString : IConnectionString + { + string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=Roma12345;Database=otp"; + } +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/DealRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/DealRepository.cs index 3eaf7b2..9d1d017 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/DealRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/DealRepository.cs @@ -1,32 +1,91 @@ -using RealEstateTransactions.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RealEstateTransactions.Entities; namespace RealEstateTransactions.Repositories.Implementations { public class DealRepository : IDealRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public DealRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateDeal(Deal deal) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(deal)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var insertQuery = @" +INSERT INTO Deal (ID, Apartment_ID, Buyer_ID, Deal_price, Deal_date) +VALUES (@ID, @Apartment_ID, @Buyer_ID, @Deal_price, @Deal_date); +SELECT MAX(Id) FROM Deal"; + var dealId = connection.QueryFirst(insertQuery, deal, transaction); + + var subInsertQuery = @" +INSERT INTO Services_Deal (Services_ID, Deal_ID, Execution_time) +VALUES (@Services_ID, @Deal_ID, @Execution_time)"; + foreach (var elem in deal.DealServices) + { + connection.Execute(subInsertQuery, new { elem.Services_ID, dealId, elem.Execution_time }, transaction); + } + + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteDeal(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var deleteQuery = @" +DELETE FROM Services_Deal +WHERE Id = @id"; + connection.Execute(deleteQuery, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } - public Deal ReadDeal(int id) + public IEnumerable ReadDeals(DateTime? dateForm = null, DateTime? dateTo = null, + int? servicesID = null, int? dealID = null) { - return Deal.CreateDeal(0, 0, 0, 0, DateTime.Now, []); - } - - public IEnumerable ReadDeals() - { - return []; - } - - public void UpdateDeal(Deal deal) - { - + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = @"SELECT * FROM Deal"; + var deals = connection.Query(selectQuery); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(deals)); + return deals; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/PreSalesServicesRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/PreSalesServicesRepository.cs index 17e590d..1fcf488 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/PreSalesServicesRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/PreSalesServicesRepository.cs @@ -1,28 +1,77 @@ -using RealEstateTransactions.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RealEstateTransactions.Entities; namespace RealEstateTransactions.Repositories.Implementations { public class PreSalesServicesRepository : IPreSalesServicesRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public PreSalesServicesRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreatePreSalesService(PreSalesServices preSalesServices) { - - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(preSalesServices)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var insertQuery = @" +INSERT INTO Pre_Sales_Services (Apartment_ID, Name, Cost) +VALUES (@Apartment_ID, @Name, @Cost)"; + connection.Execute(insertQuery, preSalesServices); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeletePreSalesService(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var deleteQuery = @" +DELETE FROM Pre_Sales_Services +WHERE Id = @id"; + connection.Execute(deleteQuery, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public IEnumerable ReadPreSalesServices() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = "SELECT * FROM Pre_Sales_Services"; + var preSalesServices = connection.Query(selectQuery); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(preSalesServices)); + return preSalesServices; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesDealRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesDealRepository.cs index ab2dfc1..98de7a6 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesDealRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesDealRepository.cs @@ -1,9 +1,4 @@ using RealEstateTransactions.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace RealEstateTransactions.Repositories.Implementations { @@ -24,4 +19,4 @@ namespace RealEstateTransactions.Repositories.Implementations return []; } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesRepository.cs b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesRepository.cs index f6c8bb9..f9aa6cf 100644 --- a/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesRepository.cs +++ b/RealEstateTransactions/RealEstateTransactions/Repositories/Implementations/ServicesRepository.cs @@ -1,37 +1,121 @@ -using RealEstateTransactions.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RealEstateTransactions.Entities; namespace RealEstateTransactions.Repositories.Implementations { public class ServicesRepository : IServicesRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public ServicesRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateService(Services service) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(service)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var insertQuery = @" +INSERT INTO Services (Name, Price) +VALUES (@Name, @Price)"; + connection.Execute(insertQuery, service); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteService(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var deleteQuery = @" +DELETE FROM Services +WHERE Id = @id"; + connection.Execute(deleteQuery, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public Services ReadService(int id) { - return Services.CreateService(0, "", 0); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {Id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = @" +SELECT * +FROM Services +WHERE Id = @id"; + var service = connection.QueryFirst(selectQuery, new { id }); + _logger.LogDebug("Найден объект: {json}", JsonConvert.SerializeObject(service)); + return service; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } } public IEnumerable ReadServices() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var selectQuery = "SELECT * FROM Services"; + var services = connection.Query(selectQuery); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(services)); + return services; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } public void UpdateService(Services service) { - + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(service)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var updateQuery = @" +UPDATE Services +SET + Name = @Name, + Price = @Price +WHERE Id = @Id"; + connection.Execute(updateQuery, service); + } + catch (Exception ex) + { + _logger.LogDebug(ex, "Ошибка при редактировании объекта"); + throw; + } } } -} +} \ No newline at end of file diff --git a/RealEstateTransactions/RealEstateTransactions/appsettings.json b/RealEstateTransactions/RealEstateTransactions/appsettings.json new file mode 100644 index 0000000..22be5c8 --- /dev/null +++ b/RealEstateTransactions/RealEstateTransactions/appsettings.json @@ -0,0 +1,16 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Debug", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "C:/my/курс 2 сим 1/ОТП/Lab/Log.txt", + "rollingInterval": "Day" + } + } + ] + } + +} \ No newline at end of file