Advertisement
Mihailo21

teatrdaoimplementacija

Dec 18th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.93 KB | None | 0 0
  1. using ODP_NET_Theatre.ConnectionPool;
  2. using ODP_NET_Theatre.Model;
  3. using ODP_NET_Theatre.Utils;
  4. using Oracle.ManagedDataAccess.Client;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11.  
  12. namespace ODP_NET_Theatre.DAO.Impl
  13. {
  14.     public class TheatreDAOImpl : ITheatreDAO
  15.     {
  16.         public int Count()
  17.         {
  18.             string query = "select count(*) from theatre";
  19.  
  20.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  21.             {
  22.                 connection.Open();
  23.                 using (IDbCommand command = connection.CreateCommand())
  24.                 {
  25.                     command.CommandText = query;
  26.                     command.Prepare();
  27.  
  28.                     return Convert.ToInt32(command.ExecuteScalar());
  29.                 }
  30.             }
  31.         }
  32.  
  33.         public int Delete(Theatre entity)
  34.         {
  35.             return DeleteById(entity.IdTh);
  36.         }
  37.  
  38.         public int DeleteAll()
  39.         {
  40.             string query = "delete from theatre";
  41.  
  42.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  43.             {
  44.                 connection.Open();
  45.                 using (IDbCommand command = connection.CreateCommand())
  46.                 {
  47.                     command.CommandText = query;
  48.                     command.Prepare();
  49.                     return command.ExecuteNonQuery();
  50.                 }
  51.             }
  52.  
  53.         }
  54.  
  55.         public int DeleteById(int id)
  56.         {
  57.             string query = "delete from theatre where id_th=:id_th";
  58.  
  59.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  60.             {
  61.                 connection.Open();
  62.                 using (IDbCommand command = connection.CreateCommand())
  63.                 {
  64.                     command.CommandText = query;
  65.                     ParameterUtil.AddParameter(command, "id_th", DbType.Int32);
  66.                     command.Prepare();
  67.                     ParameterUtil.SetParameterValue(command, "id_th", id);
  68.                     return command.ExecuteNonQuery();
  69.                 }
  70.             }
  71.         }
  72.  
  73.         public bool ExistsById(int id)
  74.         {
  75.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  76.             {
  77.                 connection.Open();
  78.                 return ExistsById(id, connection);
  79.             }
  80.         }
  81.  
  82.         // connection is a parameter because this method is used in a transaction (see
  83.         // saveAll method)
  84.         private bool ExistsById(int id, IDbConnection connection)
  85.         {
  86.             string query = "select * from theatre where id_th=:id_th";
  87.  
  88.             using (IDbCommand command = connection.CreateCommand())
  89.             {
  90.                 command.CommandText = query;
  91.                 ParameterUtil.AddParameter(command, "id_th", DbType.Int32);
  92.                 command.Prepare();
  93.                 ParameterUtil.SetParameterValue(command, "id_th", id);
  94.                 return command.ExecuteScalar() != null;
  95.             }
  96.         }
  97.  
  98.  
  99.         public IEnumerable<Theatre> FindAll()
  100.         {
  101.             string query = "select id_th, name_th, address_th, website_th, place_id_pl from theatre";
  102.             List<Theatre> theatreList = new List<Theatre>();
  103.  
  104.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  105.             {
  106.                 connection.Open();
  107.                 using (IDbCommand command = connection.CreateCommand())
  108.                 {
  109.                     command.CommandText = query;
  110.                     command.Prepare();
  111.  
  112.                     using (IDataReader reader = command.ExecuteReader())
  113.                     {
  114.                         while (reader.Read())
  115.                         {
  116.                             Theatre theatre = new Theatre(reader.GetInt32(0), reader.GetString(1),
  117.                                 reader.GetString(2), reader.GetString(3), reader.GetInt32(4));
  118.                             theatreList.Add(theatre);
  119.                         }
  120.                     }
  121.                 }
  122.             }
  123.  
  124.             return theatreList;
  125.         }
  126.  
  127.         public IEnumerable<Theatre> FindAllById(IEnumerable<int> ids)
  128.         {
  129.             StringBuilder sb = new StringBuilder();
  130.             sb.Append("select id_th, name_th, address_th, website_th, place_id_pl from theatre where id_th in (");
  131.             foreach (int id in ids)
  132.             {
  133.                 sb.Append(":id" + id + ",");
  134.             }
  135.             sb.Remove(sb.Length - 1, 1); // delete last ','
  136.             sb.Append(")");
  137.  
  138.             List<Theatre> theatreList = new List<Theatre>();
  139.  
  140.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  141.             {
  142.                 connection.Open();
  143.                 using (IDbCommand command = connection.CreateCommand())
  144.                 {
  145.                     command.CommandText = sb.ToString();
  146.                     foreach (int id in ids)
  147.                     {
  148.                         ParameterUtil.AddParameter(command, "id" + id, DbType.Int32);
  149.                     }
  150.                     command.Prepare();
  151.  
  152.                     foreach (int id in ids)
  153.                     {
  154.                         ParameterUtil.SetParameterValue(command, "id" + id, id);
  155.                     }
  156.                     using (IDataReader reader = command.ExecuteReader())
  157.                     {
  158.                         while (reader.Read())
  159.                         {
  160.                             Theatre theatre = new Theatre(reader.GetInt32(0), reader.GetString(1),
  161.                                 reader.GetString(2), reader.GetString(3), reader.GetInt32(4));
  162.                             theatreList.Add(theatre);
  163.                         }
  164.                     }
  165.                 }
  166.             }
  167.  
  168.             return theatreList;
  169.         }
  170.  
  171.         public Theatre FindById(int id)
  172.         {
  173.             string query = "select id_th, name_th, address_th, website_th, place_id_pl " +
  174.                         "from theatre where id_th = :id_th";
  175.             Theatre theatre = null;
  176.  
  177.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  178.             {
  179.                 connection.Open();
  180.                 using (IDbCommand command = connection.CreateCommand())
  181.                 {
  182.                     command.CommandText = query;
  183.                     ParameterUtil.AddParameter(command, "id_th", DbType.Int32);
  184.                     command.Prepare();
  185.                     ParameterUtil.SetParameterValue(command, "id_th", id);
  186.                     using (IDataReader reader = command.ExecuteReader())
  187.                     {
  188.                         if (reader.Read())
  189.                         {
  190.                             theatre = new Theatre(reader.GetInt32(0), reader.GetString(1),
  191.                                 reader.GetString(2), reader.GetString(3), reader.GetInt32(4));
  192.                         }
  193.                     }
  194.                 }
  195.             }
  196.  
  197.             return theatre;
  198.         }
  199.  
  200.         public int Save(Theatre entity)
  201.         {
  202.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  203.             {
  204.                 connection.Open();
  205.                 return Save(entity, connection);
  206.             }
  207.         }
  208.  
  209.         // used by save and saveAll
  210.         private int Save(Theatre theatre, IDbConnection connection)
  211.         {
  212.             // id_th intentionally in the last place, so that the order between commands remains the same
  213.             string insertSql = "insert into theatre (name_th, address_th, website_th, place_id_pl, id_th) " +
  214.                 "values (:name_th, :address_th , :website_th, :place_id_pl, :id_th)";
  215.             string updateSql = "update theatre set name_th=:name_th, address_th=:address_th, " +
  216.                 "website_th=:website_th, place_id_pl=:place_id_pl where id_th=:id_th";
  217.             using (IDbCommand command = connection.CreateCommand())
  218.             {
  219.                 command.CommandText = ExistsById(theatre.IdTh, connection) ? updateSql : insertSql;
  220.                 ParameterUtil.AddParameter(command, "name_th", DbType.String, 50);
  221.                 ParameterUtil.AddParameter(command, "address_th", DbType.String, 50);
  222.                 ParameterUtil.AddParameter(command, "website_th", DbType.String, 50);
  223.                 ParameterUtil.AddParameter(command, "place_id_pl", DbType.String, 50);
  224.                 ParameterUtil.AddParameter(command, "id_th", DbType.Int32);
  225.                 command.Prepare();
  226.                 ParameterUtil.SetParameterValue(command, "id_th", theatre.IdTh);            
  227.                 ParameterUtil.SetParameterValue(command, "name_th", theatre.NameTh);        
  228.                 ParameterUtil.SetParameterValue(command, "address_th", theatre.AddressTh);
  229.                 ParameterUtil.SetParameterValue(command, "website_th", theatre.WebsiteTh);
  230.                 ParameterUtil.SetParameterValue(command, "place_id_pl", theatre.PlaceIdPl);
  231.                 return command.ExecuteNonQuery();
  232.             }
  233.         }
  234.  
  235.         public int SaveAll(IEnumerable<Theatre> entities)
  236.         {
  237.            
  238.             using (IDbConnection connection = ConnectionUtil_Pooling.GetConnection())
  239.             {
  240.                 connection.Open();
  241.                 IDbTransaction transaction = connection.BeginTransaction(); // transaction start
  242.  
  243.                 int numSaved = 0;
  244.  
  245.                 // insert or update every theatre
  246.                 foreach (Theatre entity in entities)
  247.                 {
  248.                     // changes are visible only to current connection
  249.                     numSaved += Save(entity, connection);
  250.                 }
  251.  
  252.                 // transaction ends successfully, changes are now visible to other connections as well
  253.                 transaction.Commit();
  254.  
  255.                 return numSaved;
  256.             }
  257.         }
  258.  
  259.     }
  260.  
  261. }
  262.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement