change on mongodb

This commit is contained in:
DozorovaA.A 2023-05-06 11:53:48 +04:00
parent 8d2fc1a9d6
commit 53204eab06
13 changed files with 604 additions and 507 deletions

View File

@ -157,7 +157,11 @@ namespace Announcements
comboBox1.Visible = false; comboBox1.Visible = false;
button3.Visible = false; button3.Visible = false;
button1.Visible = true; button1.Visible = true;
label7.Text = "Дата обновления: " + (Id.changeDate < Id.createDate ? Id.createDate.Date : Id.changeDate.Date); if(Id.createDate.HasValue)
{
label7.Text = "Дата обновления: " + (Id.changeDate.Value < Id.createDate.Value ? (DateTime)Id.createDate.Value.Date : (DateTime)Id.changeDate.Value.Date);
}
if (Id.isClose) if (Id.isClose)
{ {
label3.Visible = true; label3.Visible = true;

View File

@ -10,6 +10,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" />
<PackageReference Include="MongoDB.Bson" Version="2.19.1" />
<PackageReference Include="MongoDB.Driver" Version="2.19.1" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" /> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />
</ItemGroup> </ItemGroup>

View File

@ -1,4 +1,5 @@
using Announcements.Models; using Announcements.Models;
using MongoDB.Bson;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;

View File

@ -1,25 +0,0 @@
using Announcements.Database.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.VisualBasic.ApplicationServices;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Announcements.Database
{
public class DataBaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseNpgsql("Host=192.168.1.70;Port=5432;Database=database;Username=postgres;Password=123");
}
base.OnConfiguring(optionsBuilder);
}
}
}

View File

@ -2,6 +2,8 @@
using Announcements.Database.Models; using Announcements.Database.Models;
using Announcements.Models; using Announcements.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -26,12 +28,18 @@ namespace Announcements.Database.Implements
} }
public bool BlockingAnnouncement(IAnnouncement model) public bool BlockingAnnouncement(IAnnouncement model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.blocking "+ var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
@$"SET blockingid = {model.blockingId} WHERE id = {model.id}", new object[] { });
var update = Builders<BsonDocument>.Update.Set("BlockingId", model.blockingId);
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -39,19 +47,49 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool CreateAnnouncement(IAnnouncement model) public bool CreateAnnouncement(IAnnouncement model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
var reviews = new BsonArray();
//model.reviews.ToList().Select(review => reviews.Add(new BsonDocument
//{
// ["_id"] = review.id,
// ["Text"] = review.text,
// ["Complaints"] = review.complaints,
// ["AuthorID"] = review.authorId.ToString(),
// ["BlockingId"] = review.blockingId.ToString()
//}));
try try
{ {
var script = @$"INSERT INTO public.announcement " + var update = new BsonDocument
@$"(text, createdate, changedate, complaints, isclose, categoryid, authorid, blockingid)" + {
$@"VALUES ('{model.text}', '{model.createDate}', '{model.changeDate}', " + {"_id", model.id+1},
$@"{model.complaints}, {model.isClose}, {model.categoryId.id}, {model.authorId.id}, {model.blockingId?.id.ToString()}); "; { "Text", model.text},
_db.Database.ExecuteSqlRaw(script, new object[] { });
{"Createdate", model.createDate},
{"Changedate", model.changeDate},
{"Complaints", model.complaints},
{"Isclose", model.isClose},
{"Review", reviews},
{"CategoryId", model.categoryId.id.ToString()},
{"AuthorId", model.authorId.id.ToString()}
//{ "BlockingId", model.blockingId?.ToString()}
};
collection.InsertOne(update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -59,16 +97,18 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool DeleteAnnouncement(IAnnouncement model) public bool DeleteAnnouncement(IAnnouncement model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
try try
{ {
_db.Database.ExecuteSqlRaw(@$"DELETE FROM public.announcement " + collection.DeleteOne(filter);
@$" WHERE id = {model.id}; ", new object[] { });
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -76,94 +116,142 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public IAnnouncement? ReadElement(int id) public IAnnouncement? ReadElement(int id)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = $"SELECT * FROM public.announcement WHERE id = {id}";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
using (var result = command.ExecuteReader()) var findAnn = collection.Find(filter).FirstOrDefault();
{
Announcement announcement = new Announcement();
while (result.Read()) var reviews = new BsonArray();
//var rev = new List.reviews.ToList().Select(review => reviews.Add(new BsonDocument
//{
// review.id = ["_id"],
// ["Text"] = review.text,
// ["Complaints"] = review.complaints,
// ["AuthorID"] = review.authorId.ToString(),
// ["BlockingId"] = review.blockingId.ToString()
//}));
IAnnouncement announcement = new Announcement
{ {
announcement = new Announcement id = Convert.ToInt32(findAnn["_id"]),
{ text = findAnn["Text"].ToString(),
id = Convert.ToInt32(result["id"]),
text = result["text"].ToString(), createDate = findAnn["Createdate"].ToString().ToLower() == "bsonnull" ? null : Convert.ToDateTime(findAnn["Createdate"]),
createDate = Convert.ToDateTime(result["createdate"]),
changeDate = Convert.ToDateTime(result["changedate"]), changeDate = findAnn["Changedate"].ToString().ToLower() == "bsonnull" ? null : Convert.ToDateTime(findAnn["Changedate"]),
complaints = Convert.ToInt32(result["complaints"]),
isClose = (bool)result["isclose"], complaints = Convert.ToInt32(findAnn["Complaints"]),
categoryId = categoryLogic.ReadElement(Convert.ToInt32(result["categoryId"])),
authorId = userLogic.ReadElement(Convert.ToInt32(result["authorid"])), isClose = Convert.ToBoolean(findAnn["Isclose"]),
blockingId = blockingLogic.ReadElement(Convert.ToInt32(result["blockingid"]))
reviews = new IReview [5],
categoryId = categoryLogic.ReadElement(Convert.ToInt32(findAnn["CategoryId"])),
authorId = userLogic.ReadElement(Convert.ToInt32(findAnn["AuthorId"])),
blockingId = findAnn["BlockingId"].ToString().ToLower() != "bsonnull" ? blockingLogic.ReadElement(Convert.ToInt32(findAnn["BlockingId"])) : null
}; };
}
return announcement; return announcement;
} }
}
}
}
public List<IAnnouncement>? ReadList() public List<IAnnouncement>? ReadList()
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT * FROM public.announcement";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
using (var result = command.ExecuteReader())
{
var entities = new List<IAnnouncement>(); var entities = new List<IAnnouncement>();
while (result.Read()) var ann = collection.Find(new BsonDocument()).ToList();
var u = ann[0];
ann.ForEach(u =>
{
try
{ {
entities.Add(new Announcement entities.Add(new Announcement
{ {
id = Convert.ToInt32(result["id"]), id = Convert.ToInt32(u["_id"]),
text = result["text"].ToString(), text = u["Text"].ToString(),
createDate = Convert.ToDateTime(result["createdate"]),
changeDate = Convert.ToDateTime(result["changedate"]), //createDate = u["Createdate"].ToString().ToLower() == "bsonnull" ? null : Convert.ToDateTime(u["Createdate"]),
complaints = Convert.ToInt32(result["complaints"]),
isClose = (bool)result["isclose"], //changeDate = u["Changedate"].ToString().ToLower() == "bsonnull" ? null : Convert.ToDateTime(u["Changedate"]),
categoryId = categoryLogic.ReadElement(Convert.ToInt32(result["categoryid"])),
authorId = userLogic.ReadElement(Convert.ToInt32(result["authorid"])), complaints = Convert.ToInt32(u["Complaints"]),
blockingId = blockingLogic.ReadElement(Convert.ToInt32(result["blockingid"]))
isClose = Convert.ToBoolean(u["Isclose"]),
reviews = new Review[5],
categoryId = (Category)categoryLogic.ReadElement(Convert.ToInt32(u["CategoryId"])),
authorId = (User)userLogic.ReadElement(Convert.ToInt32(u["AuthorId"])),
blockingId = (Blocking?)(u["BlockingId"].ToString().ToLower() == "bsonnull" ? null : blockingLogic.ReadElement(Convert.ToInt32(u["BlockingId"])))
}); });
} }
catch (Exception ex) { }
});
return entities; return entities;
} }
}
}
}
public bool UpdateAnnouncement(IAnnouncement model) public bool UpdateAnnouncement(IAnnouncement model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("announcement");
var reviews = new BsonArray();
if(reviews != null && reviews.Count > 0)
{ {
model.reviews.ToList().Select(review => reviews.Add(new BsonDocument
{
["_id"] = review.id,
["Text"] = review.text,
["Complaints"] = review.complaints,
["AuthorID"] = review.authorId.ToString(),
["BlockingId"] = review.blockingId.ToString()
}));
}
var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
try try
{ {
var script = @$"UPDATE public.announcement " + var update = new BsonDocument
$"SET text='{model.text}', createdate='{model.createDate}', changedate='{model.changeDate}', complaints={model.complaints}, " + {
$"isclose={model.isClose}, categoryid={model.categoryId.id}, authorid={model.authorId.id}, blockingid={model.blockingId.id} " + {"_id", model.id},
$"WHERE id = {model.id}"; { "Text", model.text},
_db.Database.ExecuteSqlRaw(script, new object[] { });
{"Createdate", model.createDate},
{"Changedate", model.changeDate},
{"Complaints", model.complaints},
{"Isclose", model.isClose},
{"Review", reviews},
{"CategoryId", model.categoryId.id.ToString()},
{"AuthorId", model.authorId.id.ToString()},
{ "BlockingId", model.blockingId.id.ToString()}
};
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -173,4 +261,3 @@ namespace Announcements.Database.Implements
} }
} }
} }
}

View File

@ -2,6 +2,8 @@
using Announcements.Database.Models; using Announcements.Database.Models;
using Announcements.Models; using Announcements.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -15,13 +17,19 @@ namespace Announcements.Database.Implements
{ {
public bool CreateBlocking(IBlocking model) public bool CreateBlocking(IBlocking model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("blocking");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"INSERT INTO public.blocking" + var update = new BsonDocument
@$"(name)" + {
@$"VALUES ('{model.name}');", new object[] { }); {"_id", model.id},
{ "Name", model.name}
};
collection.InsertOne(update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -29,16 +37,18 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool DeleteBlocking(IBlocking model) public bool DeleteBlocking(IBlocking model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("blocking");
var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
try try
{ {
_db.Database.ExecuteSqlRaw(@$"DELETE FROM public.blocking " + collection.DeleteOne(filter);
@$" WHERE id = {model.id}; ", new object[] { });
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -46,78 +56,70 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public IBlocking? ReadElement(int id) public IBlocking? ReadElement(int id)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = $"SELECT * FROM public.blocking WHERE id = {id}";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("blocking");
using (var result = command.ExecuteReader()) var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
{
Blocking blocking = new Blocking();
while (result.Read()) var findBlock = collection.Find(filter).FirstOrDefault();
if(findBlock != null)
{ {
blocking = new Blocking IBlocking blocking = new Blocking
{ {
id = Convert.ToInt32(result["id"]), id = Convert.ToInt32(findBlock["_id"]),
name = result["name"].ToString() name = findBlock["Name"].ToString()
}; };
}
return blocking; return blocking;
} }
} return null;
}
} }
public List<IBlocking>? ReadList() public List<IBlocking>? ReadList()
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT * FROM public.blocking";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("blocking");
using (var result = command.ExecuteReader())
{
var entities = new List<IBlocking>(); var entities = new List<IBlocking>();
while (result.Read()) var blockings = collection.Find(new BsonDocument()).ToList();
blockings.ForEach(u =>
{ {
entities.Add(new Blocking entities.Add(new Blocking
{ {
id = Convert.ToInt32(result["id"]), id = Convert.ToInt32(u["_id"]),
name = result["name"].ToString() name = u["Name"].ToString()
});
}); });
}
return entities; return entities;
} }
}
}
}
public bool UpdateBlocking(IBlocking model) public bool UpdateBlocking(IBlocking model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("blocking");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.blocking " + var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
@$"SET name = {model.name} " + var update = new BsonDocument
@$"WHERE id = {model.id}", new object[] { }); {
{"_id", model.id},
{ "Name", model.name}
};
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -127,4 +129,3 @@ namespace Announcements.Database.Implements
} }
} }
} }
}

View File

@ -2,6 +2,8 @@
using Announcements.Database.Models; using Announcements.Database.Models;
using Announcements.Models; using Announcements.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -15,13 +17,19 @@ namespace Announcements.Database.Implements
{ {
public bool CreateCategory(ICategory model) public bool CreateCategory(ICategory model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("category");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"INSERT INTO public.category" + var update = new BsonDocument
@$"(name)" + {
@$"VALUES ('{model.name}');", new object[] { }); {"_id", model.id},
{ "Name", model.name}
};
collection.InsertOne(update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -29,16 +37,18 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool DeleteCategory(ICategory model) public bool DeleteCategory(ICategory model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("category");
var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
try try
{ {
_db.Database.ExecuteSqlRaw(@$"DELETE FROM public.category " + collection.DeleteOne(filter);
@$" WHERE id = {model.id}; ", new object[] { });
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -46,77 +56,70 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public ICategory? ReadElement(int id) public ICategory? ReadElement(int id)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = $"SELECT * FROM public.category WHERE id = {id}";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("category");
using (var result = command.ExecuteReader()) var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
{
Category category = new Category();
while (result.Read()) var findUser = collection.Find(filter).FirstOrDefault();
ICategory category = new Category
{ {
category = new Category id = Convert.ToInt32(findUser["_id"]),
{ name = findUser["Name"].ToString()
id = Convert.ToInt32(result["id"]),
name = result["name"].ToString()
}; };
}
return category; return category;
} }
}
}
}
public List<ICategory>? ReadList() public List<ICategory>? ReadList()
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT * FROM public.category";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("category");
using (var result = command.ExecuteReader())
{
var entities = new List<ICategory>(); var entities = new List<ICategory>();
while (result.Read()) var categories = collection.Find(new BsonDocument()).ToList();
categories.ForEach(u =>
{
if(!u.Contains("_Id"))
{ {
entities.Add(new Category entities.Add(new Category
{ {
id = Convert.ToInt32(result["id"]), id = Convert.ToInt32(u["_id"]),
name = result["name"].ToString() name = u["Name"].ToString()
}); });
} }
});
return entities; return entities;
} }
}
}
}
public bool UpdateCategory(ICategory model) public bool UpdateCategory(ICategory model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("category");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.category " + var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
@$"SET name = {model.name} "+ var update = new BsonDocument
@$"WHERE id = {model.id}", new object[] { }); {
{"_id", model.id},
{ "Name", model.name}
};
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -126,4 +129,3 @@ namespace Announcements.Database.Implements
} }
} }
} }
}

View File

@ -2,6 +2,8 @@
using Announcements.Database.Models; using Announcements.Database.Models;
using Announcements.Models; using Announcements.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -26,11 +28,18 @@ namespace Announcements.Database.Implements
public bool BlockingReview(IReview model) public bool BlockingReview(IReview model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("review");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.review SET isadmin = true WHERE id = {model.id}", new object[] { }); var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
var update = Builders<BsonDocument>.Update.Set("BlockingId", model.blockingId);
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -38,131 +47,111 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool CreateReview(IReview model) public bool CreateReview(IReview model)
{ {
using (var _db = new DataBaseContext()) //MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
try //var database = dbClient.GetDatabase("database");
{ //var collection = database.GetCollection<BsonDocument>("announcement");
_db.Database.ExecuteSqlRaw(@$"INSERT INTO public.review "+ //var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
$"(text, createdate, complaints, announcementid, authorid, blockingid) "+
$"VALUES('{model.text}', '{model.createDate}', {model.complaints}, {model.announcementId.id}, "+ //var update = new
$"{model.authorId.id}, {model.blockingId.id}); ", new object[] { });
//model.reviews.ToList().Select(review => reviews.Add(new BsonDocument
//{
// ["_id"] = review.id,
// ["Text"] = review.text,
// ["Complaints"] = review.complaints,
// ["AuthorID"] = review.authorId.ToString(),
// ["BlockingId"] = review.blockingId.ToString()
//}));
return true; return true;
} }
catch (Exception ex)
{
return false;
}
}
}
public bool DeleteReview(IReview model) public bool DeleteReview(IReview model)
{ {
using (var _db = new DataBaseContext()) //using (var _db = new DataBaseContext())
{ //{
try // try
{ // {
_db.Database.ExecuteSqlRaw(@$"DELETE FROM public.review " + // _db.Database.ExecuteSqlRaw(@$"DELETE FROM public.review " +
@$" WHERE id = {model.id}; ", new object[] { }); // @$" WHERE id = {model.id}; ", new object[] { });
// return true;
// }
// catch (Exception ex)
// {
// return false;
// }
//}
return true; return true;
} }
catch (Exception ex)
{
return false;
}
}
}
public IReview? ReadElement(int id) public IReview? ReadElement(int id)
{ {
using (var _db = new DataBaseContext()) //MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = $"SELECT * FROM public.review WHERE id = {id}";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); //var database = dbClient.GetDatabase("database");
//var collection = database.GetCollection<BsonDocument>("announcement");
//var filter = Builders<BsonDocument>.Filter.Eq("student_id", 10000);
return new Review();
using (var result = command.ExecuteReader())
{
Review review = new Review();
while (result.Read())
{
review = new Review
{
id = Convert.ToInt32(result["id"]),
text = result["text"].ToString(),
createDate = Convert.ToDateTime(result["createdate"]),
complaints = Convert.ToInt32(result["complaints"]),
announcementId = announcementLogic.ReadElement(Convert.ToInt32(result["announcementId"])),
authorId = userLogic.ReadElement(Convert.ToInt32(result["authorid"])),
blockingId = blockingLogic.ReadElement(Convert.ToInt32(result["blockingId"]))
};
}
return review;
}
}
}
} }
public List<IReview>? ReadList() public List<IReview>? ReadList()
{ {
using (var _db = new DataBaseContext()) //using (var _db = new DataBaseContext())
{ //{
using (var command = _db.Database.GetDbConnection().CreateCommand()) // using (var command = _db.Database.GetDbConnection().CreateCommand())
{ // {
command.CommandText = $"SELECT * FROM public.review"; // command.CommandText = $"SELECT * FROM public.review";
command.CommandType = CommandType.Text; // command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); // _db.Database.OpenConnection();
using (var result = command.ExecuteReader()) // using (var result = command.ExecuteReader())
{ // {
var reviews = new List<IReview>(); // var reviews = new List<IReview>();
while (result.Read()) // while (result.Read())
{ // {
reviews.Add(new Review // reviews.Add(new Review
{ // {
id = Convert.ToInt32(result["id"]), // id = Convert.ToInt32(result["id"]),
text = result["text"].ToString(), // text = result["text"].ToString(),
createDate = Convert.ToDateTime(result["createdate"]), // createDate = Convert.ToDateTime(result["createdate"]),
complaints = Convert.ToInt32(result["complaints"]), // complaints = Convert.ToInt32(result["complaints"]),
announcementId = announcementLogic.ReadElement(Convert.ToInt32(result["announcementId"])), // announcementId = announcementLogic.ReadElement(Convert.ToInt32(result["announcementId"])),
authorId = userLogic.ReadElement(Convert.ToInt32(result["authorid"])), // authorId = userLogic.ReadElement(Convert.ToInt32(result["authorid"])),
blockingId = blockingLogic.ReadElement(Convert.ToInt32(result["blockingId"])) // blockingId = blockingLogic.ReadElement(Convert.ToInt32(result["blockingId"]))
}); // });
} // }
return reviews; // return reviews;
} // }
} // }
} //}
return new List<IReview>();
} }
public bool UpdateReview(IReview model) public bool UpdateReview(IReview model)
{ {
using (var _db = new DataBaseContext()) //using (var _db = new DataBaseContext())
{ //{
try // try
{ // {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.review "+ // _db.Database.ExecuteSqlRaw(@$"UPDATE public.review "+
@$"SET text={model.text}, createdate={model.createDate}, complaints={model.complaints}, announcementid={model.announcementId.id}, "+ // @$"SET text={model.text}, createdate={model.createDate}, complaints={model.complaints}, announcementid={model.announcementId.id}, "+
@$"authorid={model.authorId.id}, blockingid={model.blockingId.id} "+ // @$"authorid={model.authorId.id}, blockingid={model.blockingId.id} "+
@$" WHERE id = ", new object[] { }); // @$" WHERE id = ", new object[] { });
// return true;
// }
// catch (Exception ex)
// {
// return false;
// }
//}
return true; return true;
} }
catch (Exception ex)
{
return false;
}
}
}
} }
} }

View File

@ -2,6 +2,8 @@
using Announcements.Database.Models; using Announcements.Database.Models;
using Announcements.Models; using Announcements.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using MongoDB.Bson;
using MongoDB.Driver;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -15,11 +17,18 @@ namespace Announcements.Database.Implements
{ {
public bool BlockingUser(IUser model) public bool BlockingUser(IUser model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.user SET isadmin = true WHERE id = {model.id}", new object[] { }); var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
var update = Builders<BsonDocument>.Update.Set("isAdmin", true);
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -27,18 +36,36 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool CreateUser(IUser model) public bool CreateUser(IUser model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"INSERT INTO public.user"+ var update = new BsonDocument
@$"(name, surname, patronymic, email, password, registrdate, rating, isadmin)"+ {
@$"VALUES ('{model.name}', '{model.surname}', '{model.patronymic}', '{model.email}', "+ {"_id", model.id},
@$"'{model.password}', '{model.registrDate}'::timestamp, '{model.rating}', '{model.isAdmin}');", new object[] { }); { "Name", model.name},
{"Surname", model.surname},
{"Patronymic", model.patronymic},
{"Email", model.email},
{"Password", model.password},
{"Registerdate", model.registrDate},
{"Rating", model.rating},
{"isAdmin", model.isAdmin }
};
collection.InsertOne(update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -46,16 +73,18 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public bool DeleteUser(IUser model) public bool DeleteUser(IUser model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
try try
{ {
_db.Database.ExecuteSqlRaw(@$"DELETE FROM public.user "+ collection.DeleteOne(filter);
@$" WHERE id = {model.id}; ", new object[] { });
return true; return true;
} }
catch(Exception ex) catch(Exception ex)
@ -63,92 +92,98 @@ namespace Announcements.Database.Implements
return false; return false;
} }
} }
}
public IUser? ReadElement(int id) public IUser? ReadElement(int id)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = $"SELECT * FROM public.user WHERE id = {id}";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
using (var result = command.ExecuteReader()) var filter = Builders<BsonDocument>.Filter.Eq("_id", id);
{
User user = new User();
while (result.Read()) var findUser = collection.Find(filter).FirstOrDefault();
IUser user = new User
{ {
user = new User id = Convert.ToInt32(findUser["_id"]),
{ name = findUser["Name"].ToString(),
id = Convert.ToInt32(result["id"]), surname = findUser["Surname"].ToString(),
name = result["name"].ToString(), patronymic = findUser["Patronymic"].ToString(),
surname = result["surname"].ToString(), password = findUser["Password"].ToString(),
patronymic = result["patronymic"].ToString(), email = findUser["Email"].ToString(),
password = result["password"].ToString(), registrDate = findUser["Registerdate"].ToString().ToLower() == "bsonnull" ? null : Convert.ToDateTime(findUser["Registerdate"]),
email = result["email"].ToString(), //rating = (Convert.ToDouble(findUser["Rating"])),
registrDate = Convert.ToDateTime(result["registrdate"]), isAdmin = Convert.ToBoolean(findUser["isAdmin"])
rating = (float)Convert.ToDecimal(result["rating"]),
isAdmin = (bool)result["isadmin"]
}; };
}
return user; return user;
} }
}
}
}
public List<IUser>? ReadList() public List<IUser>? ReadList()
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
using (var command = _db.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT * FROM public.user";
command.CommandType = CommandType.Text;
_db.Database.OpenConnection(); var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
using (var result = command.ExecuteReader())
{
var entities = new List<IUser>(); var entities = new List<IUser>();
while (result.Read()) var users = collection.Find(new BsonDocument()).ToList();
users.ForEach(u =>
{ {
DateTime res;
DateTime.TryParse(u["Registerdate"].ToString(), out res);
entities.Add(new User entities.Add(new User
{ {
id = Convert.ToInt32(result["id"]), id = Convert.ToInt32(u["_id"]),
name = result["name"].ToString(), name = u["Name"].ToString(),
surname = result["surname"].ToString(), surname = u["Surname"].ToString(),
patronymic = result["patronymic"].ToString(), patronymic = u["Patronymic"].ToString(),
password = result["password"].ToString(), password = u["Password"].ToString(),
email = result["email"].ToString(), email = u["Email"].ToString(),
registrDate = Convert.ToDateTime(result["registrdate"]), registrDate = res == null ? DateTime.UtcNow : res,
rating = (float)(Convert.ToDouble(result["rating"])), rating = (float)(Convert.ToDouble(u["Rating"])),
isAdmin = (bool)result["isadmin"] isAdmin = (bool)u["isAdmin"]
});
}); });
}
return entities; return entities;
}
}
}
} }
public bool UpdateUser(IUser model) public bool UpdateUser(IUser model)
{ {
using (var _db = new DataBaseContext()) MongoClient dbClient = new MongoClient(@"mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.2");
{
var database = dbClient.GetDatabase("database");
var collection = database.GetCollection<BsonDocument>("user");
try try
{ {
_db.Database.ExecuteSqlRaw(@$"UPDATE public.user "+ var filter = Builders<BsonDocument>.Filter.Eq("_id", model.id);
@$"SET name = {model.name}, surname = {model.surname}, patronymic = {model.patronymic}, email = {model.email}, "+ var update = new BsonDocument
@$"password = {model.password}, registrdate = {model.registrDate}, rating = {model.rating}, isadmin = {model.isAdmin} "+ {
@$"WHERE id = {model.id}", new object[] { }); {"_id", model.id},
{ "Name", model.name},
{"Surname", model.surname},
{"Patronymic", model.patronymic},
{"Email", model.email},
{"Password", model.password},
{"Registerdate", model.registrDate},
{"Rating", model.rating},
{"isAdmin", model.isAdmin }
};
collection.UpdateOne(filter, update);
return true; return true;
} }
catch (Exception ex) catch (Exception ex)
@ -158,4 +193,3 @@ namespace Announcements.Database.Implements
} }
} }
} }
}

View File

@ -13,13 +13,14 @@ namespace Announcements.Database.Models
public string text { get; set; } public string text { get; set; }
public DateTime createDate { get; set; } public DateTime? createDate { get; set; }
public DateTime changeDate { get; set; } public DateTime? changeDate { get; set; }
public int complaints { get; set; } public int complaints { get; set; }
public bool isClose { get; set; } public bool isClose { get; set; }
public IReview[] reviews { get; set; }
public ICategory categoryId { get; set; } public ICategory categoryId { get; set; }

View File

@ -21,7 +21,7 @@ namespace Announcements.Database.Models
public string password { get; set; } public string password { get; set; }
public DateTime registrDate { get; set; } public DateTime? registrDate { get; set; }
public float rating { get; set; } public float rating { get; set; }

View File

@ -10,10 +10,11 @@ namespace Announcements.Models
{ {
int id { get; } int id { get; }
string text { get; } string text { get; }
DateTime createDate { get; } DateTime? createDate { get; }
DateTime changeDate { get; } DateTime? changeDate { get; }
int complaints { get; } int complaints { get; }
bool isClose { get; } bool isClose { get; }
IReview[] reviews { get; }
ICategory categoryId { get; } ICategory categoryId { get; }
IUser authorId { get; } IUser authorId { get; }
IBlocking blockingId { get; } IBlocking blockingId { get; }

View File

@ -14,7 +14,7 @@ namespace Announcements.Models
string patronymic {get; } string patronymic {get; }
string email {get; } string email {get; }
string password {get; } string password {get; }
DateTime registrDate { get; } DateTime? registrDate { get; }
float rating { get; } float rating { get; }
bool isAdmin {get; } bool isAdmin {get; }