From e53450d1c78d34e207f5fa2758ea1a7e37686dc4 Mon Sep 17 00:00:00 2001 From: MikhniukR Date: Wed, 3 Aug 2016 13:37:20 +0300 Subject: [PATCH 01/24] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20mongo=20=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B4=D1=80?= =?UTF-8?q?=D0=B0=D0=B9=D0=B2=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DB/Interfaces/IProjectRepository.cs | 1 + DB/MongoClientFactory.cs | 20 +++--- DB/Repositories/DBCommentRepository.cs | 12 ++-- DB/Repositories/DBImageRepository.cs | 44 ++++++------- DB/Repositories/DBProjectRepository.cs | 85 ++++++++++++++------------ WebApp/Web.config | 3 +- 6 files changed, 79 insertions(+), 86 deletions(-) diff --git a/DB/Interfaces/IProjectRepository.cs b/DB/Interfaces/IProjectRepository.cs index 06b2026..35d431c 100644 --- a/DB/Interfaces/IProjectRepository.cs +++ b/DB/Interfaces/IProjectRepository.cs @@ -14,6 +14,7 @@ public interface IProjectRepository void DeleteAll(); void DeleteCommentFromProject(ObjectId projectId, ObjectId commentId); void DeleteImageFromProject(ObjectId projectId, ObjectId imageId); + void DeleteProjectFromProject(ObjectId rootProjectId, ObjectId deletedProjectId); Project AddProject(Project project); Project GetProjectById(ObjectId id); List GetAllProject(); diff --git a/DB/MongoClientFactory.cs b/DB/MongoClientFactory.cs index 6e17037..a774e0d 100644 --- a/DB/MongoClientFactory.cs +++ b/DB/MongoClientFactory.cs @@ -12,21 +12,19 @@ namespace DB { public class MongoClientFactory { - public static MongoUrl GetMongoUrl() + public static MongoClient GetMongoClient() { - return new MongoUrl(ConfigurationManager.AppSettings.Get("MONGOLAB_URI")); + var dbConnectionString = System.Configuration.ConfigurationManager.AppSettings["DB"]; + if (!String.IsNullOrEmpty(dbConnectionString)) + { + return new MongoClient(dbConnectionString); + } + return new MongoClient(); } - public static MongoServer GetMongoServer() - { - var client = new MongoClient(GetMongoUrl()); - var server = client.GetServer(); - return server; - } - public static MongoDatabase GetMongoDatabase() + public static IMongoDatabase GetMongoDatabase(String name = "mongodb") { - var database = GetMongoServer().GetDatabase(GetMongoUrl().DatabaseName); - return database; + return GetMongoClient().GetDatabase(name); } } } diff --git a/DB/Repositories/DBCommentRepository.cs b/DB/Repositories/DBCommentRepository.cs index c9e16e7..c4f9db6 100644 --- a/DB/Repositories/DBCommentRepository.cs +++ b/DB/Repositories/DBCommentRepository.cs @@ -14,7 +14,7 @@ namespace DB.Repositories { public class DBCommentRepository : ICommentRepository { - private readonly MongoCollection _commentCollection; + private readonly IMongoCollection _commentCollection; public DBCommentRepository() { @@ -23,21 +23,21 @@ public DBCommentRepository() } public void DeleteById(ObjectId id) { - _commentCollection.Remove(Query.EQ("_id", id)); + _commentCollection.DeleteOne(c => c.Id.Equals(id)); } public void DeleteAll() { - _commentCollection.RemoveAll(); + _commentCollection.DeleteMany(c => true); } public Comment AddComment(Comment comment) { - _commentCollection.Insert(comment); + _commentCollection.InsertOne(comment); return comment; } public List GetAll() { - return _commentCollection.FindAll().ToList(); + return _commentCollection.AsQueryable().ToList(); } public Comment GetCommentById(ObjectId id) @@ -47,7 +47,7 @@ public Comment GetCommentById(ObjectId id) } public List GetCommentsByIds(List ids) { - return _commentCollection.FindAll().Where(item => ids.Contains(item.Id)).ToList(); + return _commentCollection.AsQueryable().Where(item => ids.Contains(item.Id)).ToList(); } } } diff --git a/DB/Repositories/DBImageRepository.cs b/DB/Repositories/DBImageRepository.cs index 81d7fc2..a35b086 100644 --- a/DB/Repositories/DBImageRepository.cs +++ b/DB/Repositories/DBImageRepository.cs @@ -14,7 +14,7 @@ namespace DB.Repositories { public class DBImageRepository : IImageRepository { - private readonly MongoCollection _imageCollection; + private readonly IMongoCollection _imageCollection; public DBImageRepository() { @@ -23,30 +23,34 @@ public DBImageRepository() } public void DeleteAll() { - _imageCollection.RemoveAll(); + _imageCollection.DeleteMany(prop => true); } public void DeleteById(ObjectId id) { - _imageCollection.Remove(Query.EQ("_id", id)); + _imageCollection.DeleteOne(prop => prop.Id.Equals(id)); } public void DeleteCommentFromImage(ObjectId imageId, ObjectId commentId) { - var image = _imageCollection.AsQueryable().FirstOrDefault(i => i.Id.Equals(imageId)); - _imageCollection.Remove(Query.EQ("_id", imageId)); - image.Comments.Remove(commentId); - _imageCollection.Insert(image); + var list = _imageCollection.AsQueryable().FirstOrDefault(p => p.Id.Equals(imageId)).Comments; + list.Remove(commentId); + var filter = Builders.Filter.Eq("_Id", imageId); + var update = Builders.Update + .Set("Comments", list) + .CurrentDate("lastModified"); + var result = _imageCollection.UpdateOne(filter, update); } public void AddCommentToImage(ObjectId newComments, ObjectId idImage) { - var image = _imageCollection.AsQueryable().FirstOrDefault(im => im.Id.Equals(idImage)); - _imageCollection.Remove(Query.EQ("Id", idImage)); - image.Comments.Add(newComments); - _imageCollection.Insert(image); + var filter = Builders.Filter.Eq("_Id", idImage); + var update = Builders.Update + .AddToSet("Projects", newComments) + .CurrentDate("lastModified"); + var result = _imageCollection.UpdateOne(filter, update); } public Image AddImage(Image image) { - _imageCollection.Insert(image); + _imageCollection.InsertOne(image); return image; } @@ -62,21 +66,7 @@ public Image GetImageById(ObjectId id) } public List GetImagesByIds(List ids) { - var list = _imageCollection.FindAll().ToList(); - HashSet id = new HashSet(); - foreach (ObjectId i in ids) - { - id.Add(i); - } - var images = new List(); - foreach (Image i in list) - { - if (id.Contains(i.Id)) - { - images.Add(i); - } - } - return images; + return _imageCollection.AsQueryable().Where(i => ids.Contains(i.Id)).ToList(); } } } diff --git a/DB/Repositories/DBProjectRepository.cs b/DB/Repositories/DBProjectRepository.cs index b144120..4c8263e 100644 --- a/DB/Repositories/DBProjectRepository.cs +++ b/DB/Repositories/DBProjectRepository.cs @@ -14,7 +14,7 @@ namespace DB.Repositories { public class DBProjectRepository : IProjectRepository { - private readonly MongoCollection _projectCollection; + private readonly IMongoCollection _projectCollection; public DBProjectRepository() { @@ -23,37 +23,53 @@ public DBProjectRepository() } public void DeleteById(ObjectId id) { - _projectCollection.Remove(Query.EQ("_id", id)); + _projectCollection.DeleteOne(prop => true); } public void DeleteAll() { - _projectCollection.RemoveAll(); + _projectCollection.DeleteMany(p => p.Id.Equals(p.Id)); } public void DeleteCommentFromProject(ObjectId projectId, ObjectId commentId) { - var project = _projectCollection.AsQueryable().FirstOrDefault(p=>p.Id.Equals(projectId)); - _projectCollection.Remove(Query.EQ("_id", projectId)); - project.Comments.Remove(commentId); - _projectCollection.Insert(project); + var list = _projectCollection.AsQueryable().FirstOrDefault(p => p.Id.Equals(projectId)).Comments; + list.Remove(commentId); + var filter = Builders.Filter.Eq("_Id", projectId); + var update = Builders.Update + .Set("Comments",list) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); + } + public void DeleteProjectFromProject(ObjectId rootProjectId, ObjectId deletedProjectId) + { + var list = _projectCollection.AsQueryable().FirstOrDefault(p => p.Id.Equals(rootProjectId)).Projects; + list.Remove(deletedProjectId); + var filter = Builders.Filter.Eq("_Id", rootProjectId); + var update = Builders.Update + .Set("Projects", list) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); } public void DeleteImageFromProject(ObjectId projectId, ObjectId imageId) { - var project = _projectCollection.AsQueryable().FirstOrDefault(p => p.Id.Equals(projectId)); - _projectCollection.Remove(Query.EQ("_id", projectId)); - project.Images.Remove(imageId); - _projectCollection.Insert(project); + var list = _projectCollection.AsQueryable().FirstOrDefault(p => p.Id.Equals(projectId)).Images; + list.Remove(imageId); + var filter = Builders.Filter.Eq("_Id", projectId); + var update = Builders.Update + .Set("Images", list) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); } public Project AddProject(Project project) { - _projectCollection.Insert(project); + _projectCollection.InsertOne(project); return project; } public List GetAllProject() { //ToDo delete this bad method - return _projectCollection.FindAll().ToList(); + return _projectCollection.AsQueryable().ToList(); } public Project GetProjectById(ObjectId id) @@ -63,45 +79,34 @@ public Project GetProjectById(ObjectId id) public void AddProjectToProject(ObjectId newProject, ObjectId iDRootProject) { - var project = _projectCollection.AsQueryable().FirstOrDefault(im => im.Id.Equals(iDRootProject)); - _projectCollection.Remove(Query.EQ("_id", iDRootProject)); - project.Comments.Add(newProject); - _projectCollection.Insert(project); + var filter = Builders.Filter.Eq("_Id", iDRootProject); + var update = Builders.Update + .AddToSet("Projects", newProject) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); } public void AddImageToProject(ObjectId newImage, ObjectId iDProject) { - var project = _projectCollection.AsQueryable().FirstOrDefault(im => im.Id.Equals(iDProject)); - _projectCollection.Remove(Query.EQ("_id", iDProject)); - project.Comments.Add(newImage); - _projectCollection.Insert(project); + var filter = Builders.Filter.Eq("_Id", iDProject); + var update = Builders.Update + .AddToSet("Images", newImage) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); } public void AddCommentToProject(ObjectId newComment, ObjectId iDProject) { - var project = _projectCollection.AsQueryable().FirstOrDefault(im => im.Id.Equals(iDProject)); - _projectCollection.Remove(Query.EQ("_id", iDProject)); - project.Comments.Add(newComment); - _projectCollection.Insert(project); + var filter = Builders.Filter.Eq("_Id", iDProject); + var update = Builders.Update + .AddToSet("Comments", newComment) + .CurrentDate("lastModified"); + var result = _projectCollection.UpdateOne(filter, update); } public List GetProjectsByIds(List ids) { - var list = _projectCollection.FindAll().ToList(); - HashSet id = new HashSet(); - foreach (ObjectId i in ids) - { - id.Add(i); - } - var projects = new List(); - foreach (Project p in list) - { - if (id.Contains(p.Id)) - { - projects.Add(p); - } - } - return projects; + return _projectCollection.AsQueryable().Where(p => ids.Contains(p.Id)).ToList(); } } } diff --git a/WebApp/Web.config b/WebApp/Web.config index 00779b1..00ad1f5 100644 --- a/WebApp/Web.config +++ b/WebApp/Web.config @@ -12,9 +12,8 @@ - + - @@ -43,7 +43,9 @@ + + diff --git a/WebApp/WebApp.csproj b/WebApp/WebApp.csproj index ef08f68..bdb1622 100644 --- a/WebApp/WebApp.csproj +++ b/WebApp/WebApp.csproj @@ -73,12 +73,25 @@ + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll + True + + + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll + True + @@ -184,6 +197,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -207,6 +249,7 @@ + @@ -215,6 +258,26 @@ + + + + + + + + + + + + + + + + + + + + SettingsSingleFileGenerator diff --git a/WebApp/packages.config b/WebApp/packages.config index 426df07..e84c56a 100644 --- a/WebApp/packages.config +++ b/WebApp/packages.config @@ -12,6 +12,11 @@ + + + + + From 1d65188f409298b2ec549b9b9eb3380d53c55450 Mon Sep 17 00:00:00 2001 From: MikhniukR Date: Sat, 6 Aug 2016 13:55:43 +0300 Subject: [PATCH 07/24] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20Co?= =?UTF-8?q?mmentLogic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ControllersLogic/ControllersLogic.csproj | 69 ++++++++++++++++++ ControllersLogic/Interfaces/ICommentLogic.cs | 17 +++++ ControllersLogic/Logic/CommentLogic.cs | 73 ++++++++++++++++++++ ControllersLogic/Properties/AssemblyInfo.cs | 36 ++++++++++ ControllersLogic/packages.config | 4 ++ Ease-L.sln | 6 ++ WebApp/App_Start/RouteConfig.cs | 2 + WebApp/Controllers/CommentApiController.cs | 50 ++++++++++++++ WebApp/Controllers/CommentController.cs | 55 ++++----------- WebApp/Global.asax.cs | 5 +- WebApp/WebApp.csproj | 5 ++ 11 files changed, 280 insertions(+), 42 deletions(-) create mode 100644 ControllersLogic/ControllersLogic.csproj create mode 100644 ControllersLogic/Interfaces/ICommentLogic.cs create mode 100644 ControllersLogic/Logic/CommentLogic.cs create mode 100644 ControllersLogic/Properties/AssemblyInfo.cs create mode 100644 ControllersLogic/packages.config create mode 100644 WebApp/Controllers/CommentApiController.cs diff --git a/ControllersLogic/ControllersLogic.csproj b/ControllersLogic/ControllersLogic.csproj new file mode 100644 index 0000000..dd9a053 --- /dev/null +++ b/ControllersLogic/ControllersLogic.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {89FC8B31-B22A-40DD-981E-89A86D96BE34} + Library + Properties + ControllersLogic + ControllersLogic + v4.5.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MongoDB.Bson.2.2.4\lib\net45\MongoDB.Bson.dll + True + + + + + + + + + + + + + + + + + + {4841ab80-72fd-4f53-bb68-28b111786669} + DB + + + + + + + + + \ No newline at end of file diff --git a/ControllersLogic/Interfaces/ICommentLogic.cs b/ControllersLogic/Interfaces/ICommentLogic.cs new file mode 100644 index 0000000..3dffc66 --- /dev/null +++ b/ControllersLogic/Interfaces/ICommentLogic.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using DB.Models; + +namespace ControllersLogic.Interfaces +{ + public interface ICommentLogic + { + String AddComment(String text, String name); + List GetAllComment(); + CommentWithoutObjectId GetById(String id); + CommentWithoutObjectId UpdateById(String id, String name, String text); + } +} diff --git a/ControllersLogic/Logic/CommentLogic.cs b/ControllersLogic/Logic/CommentLogic.cs new file mode 100644 index 0000000..3e8da3e --- /dev/null +++ b/ControllersLogic/Logic/CommentLogic.cs @@ -0,0 +1,73 @@ +using ControllersLogic.Interfaces; +using DB.Interfaces; +using DB.Models; +using MongoDB.Bson; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ControllerLogic +{ + public class CommentLogic: ICommentLogic + { + private static ICommentRepository _commentRepository = new DB.Repositories.DBCommentRepository(); + public String AddComment(String text, String name) + { + Comment comment = new Comment(); + comment.Text = text; + comment.CreationelData = DateTime.UtcNow; + comment.Name = name; + comment.Version = 1; + var id = _commentRepository.AddComment(comment).Id.ToString(); + return id; + } + public List GetAllComment() + { + var comments = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetAll()); + return comments; + } + public CommentWithoutObjectId GetById(String id) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + return null; + } + if (objectId == null) + { + return null; + } + var comment = CommentWithoutObjectId.CommentToCommentWithoutObjectId(_commentRepository.GetCommentById(objectId)); + if (comment == null) + { + return null; + } + return comment; + } + public CommentWithoutObjectId UpdateById(String id, String name, String text) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + return null; + } + if (objectId == null) + { + return null; + } + var comment = _commentRepository.GetCommentById(objectId); + if (comment == null) + { + return null; + } + comment.Name = name; + comment.Text = text; + comment.Version++; + _commentRepository.DeleteById(objectId); + _commentRepository.AddComment(comment); + return CommentWithoutObjectId.CommentToCommentWithoutObjectId(comment); + } + } +} diff --git a/ControllersLogic/Properties/AssemblyInfo.cs b/ControllersLogic/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6f17cac --- /dev/null +++ b/ControllersLogic/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ControllersLogic")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ControllersLogic")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("89fc8b31-b22a-40dd-981e-89a86d96be34")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ControllersLogic/packages.config b/ControllersLogic/packages.config new file mode 100644 index 0000000..d778025 --- /dev/null +++ b/ControllersLogic/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Ease-L.sln b/Ease-L.sln index 567f240..88e077c 100644 --- a/Ease-L.sln +++ b/Ease-L.sln @@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApp", "WebApp\WebApp.csp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DB", "DB\DB.csproj", "{4841AB80-72FD-4F53-BB68-28B111786669}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControllersLogic", "ControllersLogic\ControllersLogic.csproj", "{89FC8B31-B22A-40DD-981E-89A86D96BE34}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +23,10 @@ Global {4841AB80-72FD-4F53-BB68-28B111786669}.Debug|Any CPU.Build.0 = Debug|Any CPU {4841AB80-72FD-4F53-BB68-28B111786669}.Release|Any CPU.ActiveCfg = Release|Any CPU {4841AB80-72FD-4F53-BB68-28B111786669}.Release|Any CPU.Build.0 = Release|Any CPU + {89FC8B31-B22A-40DD-981E-89A86D96BE34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89FC8B31-B22A-40DD-981E-89A86D96BE34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89FC8B31-B22A-40DD-981E-89A86D96BE34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89FC8B31-B22A-40DD-981E-89A86D96BE34}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/WebApp/App_Start/RouteConfig.cs b/WebApp/App_Start/RouteConfig.cs index 103aa9a..a480d83 100644 --- a/WebApp/App_Start/RouteConfig.cs +++ b/WebApp/App_Start/RouteConfig.cs @@ -12,6 +12,8 @@ public class RouteConfig public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", diff --git a/WebApp/Controllers/CommentApiController.cs b/WebApp/Controllers/CommentApiController.cs new file mode 100644 index 0000000..0ab9a9a --- /dev/null +++ b/WebApp/Controllers/CommentApiController.cs @@ -0,0 +1,50 @@ +using ControllerLogic; +using ControllersLogic.Interfaces; +using DB.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; + +namespace WebApp.Controllers +{ + public class CommentApiController : ApiController + { + private static ICommentLogic _commentLogic = new CommentLogic(); + + [HttpPost, Route("api/Comment")] + public String AddComment(String text, String name) + { + return _commentLogic.AddComment(text, name); + } + + [HttpGet, Route("api/Comment")] + public List GetAllComment() + { + return _commentLogic.GetAllComment(); + } + + [HttpGet, Route("api/Comment/id{id}")] + public CommentWithoutObjectId GetById(String id) + { + var comment = _commentLogic.GetById(id); + if (comment == null) + { + throw new Exception("Bad id"); + } + return comment; + } + + [HttpPut, Route("Comment/id{id}")] + public CommentWithoutObjectId UpdateById(String id, String name, String text) + { + var comment = _commentLogic.UpdateById(id, name, text); + if (comment == null) + { + throw new Exception("Bad id"); + } + return comment; + } + } +} \ No newline at end of file diff --git a/WebApp/Controllers/CommentController.cs b/WebApp/Controllers/CommentController.cs index 0583210..43cd2ac 100644 --- a/WebApp/Controllers/CommentController.cs +++ b/WebApp/Controllers/CommentController.cs @@ -7,71 +7,44 @@ using System.Web.Mvc; using MongoDB.Bson; using System.Configuration; +using ControllerLogic; +using ControllersLogic.Interfaces; namespace WebApp.Controllers { public class CommentController : Controller { - private DB.Interfaces.ICommentRepository _commentRepository = new DB.Repositories.DBCommentRepository(); + private static ICommentLogic _commentLogic = new CommentLogic(); + [HttpPost, Route("Comment")] public JsonResult AddComment(String text, String name) - { - Comment comment = new Comment(); - comment.Text = text; - comment.CreationelData = DateTime.UtcNow; - comment.Name = name; - comment.Version = 1; - var id = _commentRepository.AddComment(comment).Id.ToString(); - return Json(new { Result = id }, JsonRequestBehavior.AllowGet); + { + return Json(new { Result = _commentLogic.AddComment(text, name) }, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Comment/id{id}")] public JsonResult GetById(String id) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - var comments = CommentWithoutObjectId.CommentToCommentWithoutObjectId(_commentRepository.GetCommentById(objectId)); - if (comments == null) + var comment = _commentLogic.GetById(id); + if(comment == null) { return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); } - return Json(comments, JsonRequestBehavior.AllowGet); + return Json(comment, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Comment")] - public JsonResult Index() + public JsonResult GetAllComment() { - var comments = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetAll()); - return Json(comments, JsonRequestBehavior.AllowGet); + return Json(_commentLogic.GetAllComment(), JsonRequestBehavior.AllowGet); } [HttpPut, Route("Comment/id{id}")] public JsonResult UpdateById(String id, String name, String text) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - var comment = _commentRepository.GetCommentById(objectId); - if (comment == null) + var comment = _commentLogic.UpdateById(id, name, text); + if(comment == null) { return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); } - comment.Name = name; - comment.Text = text; - comment.Version++; - _commentRepository.DeleteById(objectId); - _commentRepository.AddComment(comment); - return Json(CommentWithoutObjectId.CommentToCommentWithoutObjectId(comment), JsonRequestBehavior.AllowGet); + return Json(comment, JsonRequestBehavior.AllowGet); } } diff --git a/WebApp/Global.asax.cs b/WebApp/Global.asax.cs index 49b2841..44cac9d 100644 --- a/WebApp/Global.asax.cs +++ b/WebApp/Global.asax.cs @@ -2,9 +2,11 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; +using WebApp.App_Start; namespace WebApp { @@ -13,7 +15,8 @@ public class MvcApplication : System.Web.HttpApplication protected void Application_Start() { AreaRegistration.RegisterAllAreas(); - FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } diff --git a/WebApp/WebApp.csproj b/WebApp/WebApp.csproj index bdb1622..a0182c6 100644 --- a/WebApp/WebApp.csproj +++ b/WebApp/WebApp.csproj @@ -228,6 +228,7 @@ + @@ -344,6 +345,10 @@ + + {89fc8b31-b22a-40dd-981e-89a86d96be34} + ControllersLogic + {4841ab80-72fd-4f53-bb68-28b111786669} DB From b3551f15cc2b61cefff8d5cb956ed9d74851e361 Mon Sep 17 00:00:00 2001 From: MikhniukR Date: Sat, 6 Aug 2016 21:04:46 +0300 Subject: [PATCH 08/24] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20Im?= =?UTF-8?q?ageLogic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ControllersLogic/ControllersLogic.csproj | 11 ++ ControllersLogic/Interfaces/IImageLogic.cs | 22 +++ ControllersLogic/Logic/ImageLogic.cs | 150 +++++++++++++++++++++ ControllersLogic/packages.config | 2 + WebApp/Controllers/ImageApiController.cs | 57 ++++++++ WebApp/Controllers/ImageController.cs | 140 ++----------------- WebApp/WebApp.csproj | 1 + 7 files changed, 257 insertions(+), 126 deletions(-) create mode 100644 ControllersLogic/Interfaces/IImageLogic.cs create mode 100644 ControllersLogic/Logic/ImageLogic.cs create mode 100644 WebApp/Controllers/ImageApiController.cs diff --git a/ControllersLogic/ControllersLogic.csproj b/ControllersLogic/ControllersLogic.csproj index dd9a053..4204cc3 100644 --- a/ControllersLogic/ControllersLogic.csproj +++ b/ControllersLogic/ControllersLogic.csproj @@ -30,12 +30,21 @@ 4 + + ..\packages\CloudinaryDotNet.1.0.24\lib\net40\CloudinaryDotNet.dll + True + ..\packages\MongoDB.Bson.2.2.4\lib\net45\MongoDB.Bson.dll True + + ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll + True + + @@ -45,7 +54,9 @@ + + diff --git a/ControllersLogic/Interfaces/IImageLogic.cs b/ControllersLogic/Interfaces/IImageLogic.cs new file mode 100644 index 0000000..e8fe6d5 --- /dev/null +++ b/ControllersLogic/Interfaces/IImageLogic.cs @@ -0,0 +1,22 @@ +using DB.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Web; + +namespace ControllersLogic.Interfaces +{ + public interface IImageLogic + { + String AddCommentToImage(String simageId, String text, String name); + String AddImage(String url, String name); + String DeleteCommentFromImage(String idImage, String idComment); + String DownloadImage(HttpPostedFileBase uploadImage); + List GetAllImage(); + ImageWithoutObjectId GetById(String id); + List GetCommentFromImage(String simageId); + ImageWithoutObjectId UpdateById(String id, String name, String url); + } +} diff --git a/ControllersLogic/Logic/ImageLogic.cs b/ControllersLogic/Logic/ImageLogic.cs new file mode 100644 index 0000000..011d6c8 --- /dev/null +++ b/ControllersLogic/Logic/ImageLogic.cs @@ -0,0 +1,150 @@ +using ControllersLogic.Interfaces; +using DB.Interfaces; +using DB.Models; +using MongoDB.Bson; +using System; +using System.Collections.Generic; +using System.IO; +using System.Web; + +namespace ControllersLogic.Logic +{ + public class ImageLogic : IImageLogic + { + private IImageRepository _imageRepository = new DB.Repositories.DBImageRepository(); + private ICommentRepository _commentRepository = new DB.Repositories.DBCommentRepository(); + + public String AddCommentToImage(String simageId, String text, String name) + { + Comment comment = new Comment(); + comment.Text = text; + comment.CreationelData = DateTime.UtcNow; + comment.Name = name; + comment.Version = 1; + var commentId = _commentRepository.AddComment(comment).Id; + var imageId = new ObjectId(); + if (!ObjectId.TryParse(simageId, out imageId)) + { + return "Bad id it's not objectId"; + } + if (_imageRepository.GetImageById(imageId) == null) + { + return "Bad id image"; + } + _imageRepository.AddCommentToImage(commentId, imageId); + return commentId.ToString(); + } + public String AddImage(String url, String name) + { + Image image = new Image(); + image.Url = url; + image.Version = 1; + image.Name = name; + image.CreationelData = DateTime.UtcNow; + var id = _imageRepository.AddImage(image).Id.ToString(); + return id; + } + public String DeleteCommentFromImage(String idImage, String idComment) + { + var objectIdImage = new ObjectId(); + var objectIdComment = new ObjectId(); + if (!ObjectId.TryParse(idImage, out objectIdImage)) + { + return "Bad image id"; + } + if (!ObjectId.TryParse(idComment, out objectIdComment)) + { + return "Bad comment id"; + } + if (_imageRepository.GetImageById(objectIdImage) == null) + { + return "Bad image id, not found in DB"; + } + _imageRepository.DeleteCommentFromImage(objectIdImage, objectIdComment); + _commentRepository.DeleteById(objectIdComment); + return "OK"; + } + public String DownloadImage(HttpPostedFileBase uploadImage) + { + if (uploadImage != null) + { + string fileName = Path.GetFileName(uploadImage.FileName); + var input = uploadImage.InputStream; + CloudinaryDotNet.Account account = new CloudinaryDotNet.Account("hzvwvtbls", "482455376217895", "bXPz-CiQrEjZp4xqSV8UK_nfI2c"); + CloudinaryDotNet.Cloudinary cloudinary = new CloudinaryDotNet.Cloudinary(account); + CloudinaryDotNet.Actions.ImageUploadParams uploadParams = new CloudinaryDotNet.Actions.ImageUploadParams() + { + File = new CloudinaryDotNet.Actions.FileDescription(fileName, input) + }; + CloudinaryDotNet.Actions.ImageUploadResult uploadResult = cloudinary.Upload(uploadParams); + string url = cloudinary.Api.UrlImgUp.BuildUrl(String.Format("{0}.{1}", uploadResult.PublicId, uploadResult.Format)); + return url; + } + else + { + return "Bad file"; + } + } + public List GetAllImage() + { + var images = ImageWithoutObjectId.ImagesToImageWithoutObjectId(_imageRepository.GetAllImage()); + return images; + } + public ImageWithoutObjectId GetById(String id) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + throw new Exception("Bad id it's not objectId"); + } + if (objectId == null || _imageRepository.GetImageById(objectId) == null) + { + throw new Exception("Bad id"); + } + var image = ImageWithoutObjectId.ImageToImageWithoutObjectId(_imageRepository.GetImageById(objectId)); + if (image == null) + { + throw new Exception("Bad id"); + } + return image; + } + public List GetCommentFromImage(String simageId) + { + var imageId = new ObjectId(); + if (!ObjectId.TryParse(simageId, out imageId)) + { + throw new Exception("Bad id it's not objectId"); + } + var image = _imageRepository.GetImageById(imageId); + if (image == null) + { + throw new Exception("Bad id image, this image don't found in DB"); + } + var comments = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetCommentsByIds(image.Comments)); + return comments; + } + public ImageWithoutObjectId UpdateById(String id, String name, String url) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + throw new Exception("Bad id it's not objectId"); + } + if (objectId == null) + { + throw new Exception("Bad id"); + } + var image = _imageRepository.GetImageById(objectId); + if (image == null) + { + throw new Exception("Bad id"); + } + image.Url = url; + image.Version++; + image.Name = name; + _imageRepository.DeleteById(objectId); + _imageRepository.AddImage(image); + return ImageWithoutObjectId.ImageToImageWithoutObjectId(image); + } + } +} diff --git a/ControllersLogic/packages.config b/ControllersLogic/packages.config index d778025..a6059cc 100644 --- a/ControllersLogic/packages.config +++ b/ControllersLogic/packages.config @@ -1,4 +1,6 @@  + + \ No newline at end of file diff --git a/WebApp/Controllers/ImageApiController.cs b/WebApp/Controllers/ImageApiController.cs new file mode 100644 index 0000000..2a0f677 --- /dev/null +++ b/WebApp/Controllers/ImageApiController.cs @@ -0,0 +1,57 @@ +using ControllersLogic.Interfaces; +using ControllersLogic.Logic; +using DB.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; + +namespace WebApp.Controllers +{ + public class ImageApiController + { + private IImageLogic _imageLogic = new ImageLogic(); + + [HttpPost, Route("api/Image/id{simageId}/comment")] + public String AddCommentToImage(String simageId, String text, String name) + { + return _imageLogic.AddCommentToImage(simageId, text, name); + } + [HttpPost, Route("api/Image")] + public String AddImage(String url, String name) + { + return _imageLogic.AddImage(url, name); + } + [HttpDelete, Route("api/Image/id{idImage}/comment/id{idComment}")] + public String DeleteCommentFromImage(String idImage, String idComment) + { + return _imageLogic.DeleteCommentFromImage(idImage, idComment); + } + [HttpPost, Route("api/Image/Download")] + public String DownloadImage(HttpPostedFileBase uploadImage) + { + return _imageLogic.DownloadImage(uploadImage); + } + [HttpGet, Route("api/Image/id{id}")] + public ImageWithoutObjectId GetById(String id) + { + return _imageLogic.GetById(id); + } + [HttpGet, Route("api/Image/id{simageId}/comment")] + public List GetCommentFromImage(String simageId) + { + return _imageLogic.GetCommentFromImage(simageId); + } + [HttpGet, Route("api/Image")] + public List index() + { + return _imageLogic.GetAllImage(); + } + [HttpPut, Route("api/Image/id{id}")] + public ImageWithoutObjectId UpdateById(String id, String name, String url) + { + return _imageLogic.UpdateById(id, name, url); + } + } +} \ No newline at end of file diff --git a/WebApp/Controllers/ImageController.cs b/WebApp/Controllers/ImageController.cs index 4800460..6bb9122 100644 --- a/WebApp/Controllers/ImageController.cs +++ b/WebApp/Controllers/ImageController.cs @@ -1,170 +1,58 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Web; using System.Web.Mvc; -using DB.Interfaces; using DB.Models; using MongoDB.Bson; -using MongoDB.Bson.IO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System.Web.Helpers; using System.IO; +using ControllersLogic.Logic; +using ControllersLogic.Interfaces; namespace WebApp.Controllers { public class ImageController:Controller { - private IImageRepository _imageRepository = new DB.Repositories.DBImageRepository(); - private ICommentRepository _commentRepository = new DB.Repositories.DBCommentRepository(); + private IImageLogic _imageLogic = new ImageLogic(); [HttpPost, Route("Image/id{simageId}/comment")] public JsonResult AddCommentToImage(String simageId, String text, String name) - { - Comment comment = new Comment(); - comment.Text = text; - comment.CreationelData = DateTime.UtcNow; - comment.Name = name; - comment.Version = 1; - var commentId = _commentRepository.AddComment(comment).Id; - var imageId = new ObjectId(); - if (!ObjectId.TryParse(simageId, out imageId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (_imageRepository.GetImageById(imageId) == null) - { - var result = new { Result = "Bad id image" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - _imageRepository.AddCommentToImage(commentId, imageId); - return Json(new { Result = commentId.ToString() }, JsonRequestBehavior.AllowGet); + { + return Json(new { Result = _imageLogic.AddCommentToImage(simageId, text, name) }, JsonRequestBehavior.AllowGet); } [HttpPost, Route("Image")] public JsonResult AddImage(String url, String name) - { - DB.Models.Image image = new DB.Models.Image(); - image.Url = url; - image.Version = 1; - image.Name = name; - image.CreationelData = DateTime.UtcNow; - var id = _imageRepository.AddImage(image).Id.ToString(); - return Json(new { Result = id }, JsonRequestBehavior.AllowGet); + { + return Json(new { Result = _imageLogic.AddImage(url, name) }, JsonRequestBehavior.AllowGet); } [HttpDelete, Route("Image/id{idImage}/comment/id{idComment}")] public JsonResult DeleteCommentFromImage(String idImage, String idComment) { - var objectIdImage = new ObjectId(); - var objectIdComment = new ObjectId(); - if(!ObjectId.TryParse(idImage, out objectIdImage)) - { - return Json(new { Result = "Bad image id" }, JsonRequestBehavior.AllowGet); - } - if(!ObjectId.TryParse(idComment, out objectIdComment)) - { - return Json(new { Result = "Bad comment id" }, JsonRequestBehavior.AllowGet); - } - if(_imageRepository.GetImageById(objectIdImage) == null) - { - return Json(new { Result = "Bad image id, not found in DB" }, JsonRequestBehavior.AllowGet); - } - _imageRepository.DeleteCommentFromImage(objectIdImage, objectIdComment); - _commentRepository.DeleteById(objectIdComment); - return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _imageLogic.DeleteCommentFromImage(idImage,idComment)}, JsonRequestBehavior.AllowGet); } [HttpPost, Route("Image/Download")] public JsonResult DownloadImage(HttpPostedFileBase uploadImage) { - if (uploadImage != null) { - string fileName = Path.GetFileName(uploadImage.FileName); - var input = uploadImage.InputStream; - CloudinaryDotNet.Account account = new CloudinaryDotNet.Account("hzvwvtbls", "482455376217895", "bXPz-CiQrEjZp4xqSV8UK_nfI2c"); - CloudinaryDotNet.Cloudinary cloudinary = new CloudinaryDotNet.Cloudinary(account); - CloudinaryDotNet.Actions.ImageUploadParams uploadParams = new CloudinaryDotNet.Actions.ImageUploadParams() - { - File = new CloudinaryDotNet.Actions.FileDescription(fileName, input) - }; - CloudinaryDotNet.Actions.ImageUploadResult uploadResult = cloudinary.Upload(uploadParams); - string url = cloudinary.Api.UrlImgUp.BuildUrl(String.Format("{0}.{1}", uploadResult.PublicId, uploadResult.Format)); - return Json(new { Result = url }, JsonRequestBehavior.AllowGet); - } - else - { - return Json(new { Result = "Bad file" }, JsonRequestBehavior.AllowGet); - } + return Json(new { Result = _imageLogic.DownloadImage(uploadImage), JsonRequestBehavior.AllowGet }); } [HttpGet, Route("Image/id{id}")] public JsonResult GetById(String id) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - if (_imageRepository.GetImageById(objectId) == null) - { - var result = new List(); - result.Add(new { Result = "Bad id" }); - return Json(result, JsonRequestBehavior.AllowGet); - } - var images = ImageWithoutObjectId.ImageToImageWithoutObjectId(_imageRepository.GetImageById(objectId)); - if (images == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - return Json(images, JsonRequestBehavior.AllowGet); + return Json(new { Result = _imageLogic.GetById(id), JsonRequestBehavior.AllowGet }); } [HttpGet, Route("Image/id{simageId}/comment")] public JsonResult GetCommentFromImage(String simageId) { - var imageId = new ObjectId(); - if (!ObjectId.TryParse(simageId, out imageId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - var image = _imageRepository.GetImageById(imageId); - if (image == null) - { - return Json(new { Result = "Bad id image, this image don't found in DB" }, JsonRequestBehavior.AllowGet); - } - - var movies = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetCommentsByIds(image.Comments)); - return Json(movies, JsonRequestBehavior.AllowGet); + return Json(_imageLogic.GetCommentFromImage(simageId), JsonRequestBehavior.AllowGet); } [HttpGet, Route("Image")] public JsonResult Index() { - var images = ImageWithoutObjectId.ImagesToImageWithoutObjectId(_imageRepository.GetAllImage()); - return Json(images, JsonRequestBehavior.AllowGet); + return Json(_imageLogic.GetAllImage(), JsonRequestBehavior.AllowGet); } [HttpPut, Route("Image/id{id}")] public JsonResult UpdateById(String id, String name, String url) - { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - var image = _imageRepository.GetImageById(objectId); - if (image == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - image.Url = url; - image.Version++; - image.Name = name; - _imageRepository.DeleteById(objectId); - _imageRepository.AddImage(image); - return Json(ImageWithoutObjectId.ImageToImageWithoutObjectId(image), JsonRequestBehavior.AllowGet); + { + return Json(_imageLogic.UpdateById(id, name, url), JsonRequestBehavior.AllowGet); } } } \ No newline at end of file diff --git a/WebApp/WebApp.csproj b/WebApp/WebApp.csproj index a0182c6..dca003e 100644 --- a/WebApp/WebApp.csproj +++ b/WebApp/WebApp.csproj @@ -230,6 +230,7 @@ + From e8ff500573a091be6fb0c8c53d002234eba8e0d4 Mon Sep 17 00:00:00 2001 From: MikhniukR Date: Sun, 7 Aug 2016 11:37:34 +0300 Subject: [PATCH 09/24] =?UTF-8?q?=D0=9D=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BB=20ProjectLogic=20=D0=B8=20=D0=BD=D0=B5=D0=BC=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BD=D0=B0=D0=B2=D0=B5=D0=BB=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=80=D1=8F=D0=B4=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ControllersLogic/ControllersLogic.csproj | 2 + ControllersLogic/Interfaces/IProjectLogic.cs | 23 ++ ControllersLogic/Logic/CommentLogic.cs | 12 +- ControllersLogic/Logic/ProjectLogic.cs | 237 ++++++++++++++++++ WebApp/Controllers/CommentController.cs | 22 +- ...ntroller.cs => CommentWebApiController.cs} | 14 +- WebApp/Controllers/ImageController.cs | 28 ++- ...Controller.cs => ImageWebApiController.cs} | 2 +- WebApp/Controllers/ProjectController.cs | 215 +++------------- WebApp/Controllers/ProjectWebApiController.cs | 80 ++++++ WebApp/Views/Home/About.cshtml | 7 - WebApp/Views/Home/Index.cshtml | 8 +- WebApp/Views/Home/Project.cshtml | 17 -- WebApp/Views/Shared/_Layout.cshtml | 1 + WebApp/WebApp.csproj | 7 +- 15 files changed, 431 insertions(+), 244 deletions(-) create mode 100644 ControllersLogic/Interfaces/IProjectLogic.cs create mode 100644 ControllersLogic/Logic/ProjectLogic.cs rename WebApp/Controllers/{CommentApiController.cs => CommentWebApiController.cs} (76%) rename WebApp/Controllers/{ImageApiController.cs => ImageWebApiController.cs} (97%) create mode 100644 WebApp/Controllers/ProjectWebApiController.cs delete mode 100644 WebApp/Views/Home/About.cshtml delete mode 100644 WebApp/Views/Home/Project.cshtml diff --git a/ControllersLogic/ControllersLogic.csproj b/ControllersLogic/ControllersLogic.csproj index 4204cc3..83cfc9a 100644 --- a/ControllersLogic/ControllersLogic.csproj +++ b/ControllersLogic/ControllersLogic.csproj @@ -55,8 +55,10 @@ + + diff --git a/ControllersLogic/Interfaces/IProjectLogic.cs b/ControllersLogic/Interfaces/IProjectLogic.cs new file mode 100644 index 0000000..51f2b30 --- /dev/null +++ b/ControllersLogic/Interfaces/IProjectLogic.cs @@ -0,0 +1,23 @@ +using DB.Models; +using System; +using System.Collections.Generic; + +namespace ControllersLogic.Interfaces +{ + public interface IProjectLogic + { + String AddCommentToProject(String text, String name, String sprojectId); + String AddImageToProject(String url, String name, String sprojectId); + String AddProject(String name); + String AddProjectToProject(String sidRoot, String name); + String DeleteById(String id); + String DeleteCommentFromProject(String projectId, String commentId); + String DeleteImageFromProject(String projectId, String imageId); + List GetAllProjects(); + ProjectWithoutObjectId GetById(String id); + List GetCommentsFormProject(String sidRoot); + List GetImagesFormProject(String sidRoot); + List GetPtojectsFormProject(String sidRoot); + ProjectWithoutObjectId UpdateById(String id, String name); + } +} diff --git a/ControllersLogic/Logic/CommentLogic.cs b/ControllersLogic/Logic/CommentLogic.cs index 3e8da3e..095f94a 100644 --- a/ControllersLogic/Logic/CommentLogic.cs +++ b/ControllersLogic/Logic/CommentLogic.cs @@ -33,16 +33,16 @@ public CommentWithoutObjectId GetById(String id) var objectId = new ObjectId(); if (!ObjectId.TryParse(id, out objectId)) { - return null; + throw new Exception("This isn't objectId"); } if (objectId == null) { - return null; + throw new Exception("Bad id"); } var comment = CommentWithoutObjectId.CommentToCommentWithoutObjectId(_commentRepository.GetCommentById(objectId)); if (comment == null) { - return null; + throw new Exception("Bad id"); } return comment; } @@ -51,16 +51,16 @@ public CommentWithoutObjectId UpdateById(String id, String name, String text) var objectId = new ObjectId(); if (!ObjectId.TryParse(id, out objectId)) { - return null; + throw new Exception("This isn't objectId"); } if (objectId == null) { - return null; + throw new Exception("Bad id"); } var comment = _commentRepository.GetCommentById(objectId); if (comment == null) { - return null; + throw new Exception("Bad id"); } comment.Name = name; comment.Text = text; diff --git a/ControllersLogic/Logic/ProjectLogic.cs b/ControllersLogic/Logic/ProjectLogic.cs new file mode 100644 index 0000000..170a3a4 --- /dev/null +++ b/ControllersLogic/Logic/ProjectLogic.cs @@ -0,0 +1,237 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ControllersLogic.Interfaces; +using DB.Interfaces; +using DB.Repositories; +using DB.Models; +using MongoDB.Bson; + +namespace ControllersLogic.Logic +{ + public class ProjectLogic : IProjectLogic + { + private IProjectRepository _projectRepository = new DBProjectRepository(); + private IImageRepository _imageRepository = new DBImageRepository(); + private ICommentRepository _commentRepository = new DBCommentRepository(); + + public String AddCommentToProject(String text, String name, String sprojectId) + { + var projectId = new ObjectId(); + if (!ObjectId.TryParse(sprojectId, out projectId)) + { + return "Bad id it's not objectId"; + } + if (_projectRepository.GetProjectById(projectId) == null) + { + return "Bad id it's not found in DB" ; + } + Comment comment = new Comment(); + comment.Text = text; + comment.CreationelData = DateTime.UtcNow; + comment.Name = name; + comment.Version = 1; + var commentId = _commentRepository.AddComment(comment).Id; + _projectRepository.AddCommentToProject(commentId, projectId); + return commentId.ToString(); + } + public String AddImageToProject(String url, String name, String sprojectId) + { + var projectId = new ObjectId(); + if (!ObjectId.TryParse(sprojectId, out projectId)) + { + return "Bad id it's not objectId"; + } + if (_projectRepository.GetProjectById(projectId) == null) + { + return "Bad id it's not found in DB"; + } + Image image = new Image(); + image.Url = url; + image.Version = 1; + image.Name = name; + image.CreationelData = DateTime.UtcNow; + var imageId = _imageRepository.AddImage(image).Id; + _projectRepository.AddImageToProject(imageId, projectId); + return imageId.ToString(); + } + public String AddProject(String name) + { + Project project = new Project(); + project.Name = name; + project.Version = 1; + project.CreationelData = DateTime.UtcNow; + var id = _projectRepository.AddProject(project).Id; + return id.ToString(); + } + public String AddProjectToProject(String sidRoot, String name) + { + var idRoot = new ObjectId(); + if (!ObjectId.TryParse(sidRoot, out idRoot)) + { + return "Bad id it's not objectId"; + } + if (_projectRepository.GetProjectById(idRoot) == null) + { + return "Bad id it's not found in DB" ; + } + Project project = new Project(); + project.Name = name; + project.Version = 1; + project.CreationelData = DateTime.UtcNow; + var idNew = _projectRepository.AddProject(project).Id; + _projectRepository.AddProjectToProject(idNew, idRoot); + return idNew.ToString(); + } + public String DeleteById(String id) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + return "Bad id it's not objectId" ; + } + if (objectId == null) + { + return "Bad id"; + } + if (_projectRepository.GetProjectById(objectId) == null) + { + return "Bad id"; + } + _projectRepository.DeleteById(objectId); + return "OK"; + } + public String DeleteCommentFromProject(String projectId, String commentId) + { + var objectIdProject = new ObjectId(); + var objectIdComment = new ObjectId(); + if (!ObjectId.TryParse(projectId, out objectIdProject)) + { + return "Bad id project it's not objectId"; + } + if (!ObjectId.TryParse(commentId, out objectIdComment)) + { + return "Bad id coomment it's not objectId"; + } + if (_projectRepository.GetProjectById(objectIdProject) == null) + { + return "Bad id"; + } + _projectRepository.DeleteCommentFromProject(objectIdProject, objectIdComment); + _commentRepository.DeleteById(objectIdComment); + return "OK"; + } + public String DeleteImageFromProject(String projectId, String imageId) + { + var objectIdProject = new ObjectId(); + var objectIdImage = new ObjectId(); + if (!ObjectId.TryParse(projectId, out objectIdProject)) + { + return "Bad id project it's not objectId"; + } + if (!ObjectId.TryParse(imageId, out objectIdImage)) + { + return "Bad id image it's not objectId"; + } + if (_projectRepository.GetProjectById(objectIdProject) == null) + { + return "Bad id"; + } + _projectRepository.DeleteImageFromProject(objectIdProject, objectIdImage); + _imageRepository.DeleteById(objectIdImage); + return "OK"; + } + public List GetAllProjects() + { + var projects = ProjectWithoutObjectId.ProjectsToProjectWithoutObjectId(_projectRepository.GetAllProject()); + return projects; + } + public ProjectWithoutObjectId GetById(String id) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + throw new Exception("Bad id it's not objectId"); + } + if (objectId == null) + { + throw new Exception("Bad id"); + } + var project = ProjectWithoutObjectId.ProjectToProjectWithoutObjectId(_projectRepository.GetProjectById(objectId)); + if (project == null) + { + throw new Exception("Bad id"); + } + return project; + } + public List GetCommentsFormProject(String sidRoot) + { + var idRoot = new ObjectId(); + if (!ObjectId.TryParse(sidRoot, out idRoot)) + { + throw new Exception("Bad id it's not objectId"); + } + var project = _projectRepository.GetProjectById(idRoot); + if (project == null) + { + throw new Exception("Bad id it's not found in DB"); + } + var comments = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetCommentsByIds(project.Comments)); + return comments; + } + public List GetImagesFormProject(String sidRoot) + { + var idRoot = new ObjectId(); + if (!ObjectId.TryParse(sidRoot, out idRoot)) + { + throw new Exception("Bad id it's not objectId" ); + } + var project = _projectRepository.GetProjectById(idRoot); + if (project == null) + { + throw new Exception("Bad id it's not found in DB"); + } + var images = ImageWithoutObjectId.ImagesToImageWithoutObjectId(_imageRepository.GetImagesByIds(project.Images)); + return images; + } + public List GetPtojectsFormProject(String sidRoot) + { + var idRoot = new ObjectId(); + if (!ObjectId.TryParse(sidRoot, out idRoot)) + { + throw new Exception("Bad id it's not objectId"); + } + var project = _projectRepository.GetProjectById(idRoot); + if (project == null) + { + throw new Exception("Bad id it's not found in DB"); + } + var projects = ProjectWithoutObjectId.ProjectsToProjectWithoutObjectId(_projectRepository.GetProjectsByIds(project.Projects)); + return projects; + } + public ProjectWithoutObjectId UpdateById(String id, String name) + { + var objectId = new ObjectId(); + if (!ObjectId.TryParse(id, out objectId)) + { + throw new Exception("Bad id it's not objectId"); + } + if (objectId == null) + { + throw new Exception("Bad id"); + } + var project = _projectRepository.GetProjectById(objectId); + if (project == null) + { + throw new Exception("Bad id"); + } + project.Name = name; + project.Version++; + _projectRepository.DeleteById(objectId); + _projectRepository.AddProject(project); + return ProjectWithoutObjectId.ProjectToProjectWithoutObjectId(project); + } + } +} diff --git a/WebApp/Controllers/CommentController.cs b/WebApp/Controllers/CommentController.cs index 43cd2ac..11ac417 100644 --- a/WebApp/Controllers/CommentController.cs +++ b/WebApp/Controllers/CommentController.cs @@ -24,28 +24,30 @@ public JsonResult AddComment(String text, String name) [HttpGet, Route("Comment/id{id}")] public JsonResult GetById(String id) { - var comment = _commentLogic.GetById(id); - if(comment == null) + try { + return Json(_commentLogic.GetById(id), JsonRequestBehavior.AllowGet); + } + catch (Exception e) { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(e.ToString() , JsonRequestBehavior.AllowGet); } - return Json(comment, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Comment")] - public JsonResult GetAllComment() + public JsonResult Index() { return Json(_commentLogic.GetAllComment(), JsonRequestBehavior.AllowGet); } [HttpPut, Route("Comment/id{id}")] public JsonResult UpdateById(String id, String name, String text) { - var comment = _commentLogic.UpdateById(id, name, text); - if(comment == null) + try + { + return Json(_commentLogic.UpdateById(id, name, text), JsonRequestBehavior.AllowGet); + } + catch (Exception e) { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(e.ToString() , JsonRequestBehavior.AllowGet); } - return Json(comment, JsonRequestBehavior.AllowGet); } - } } \ No newline at end of file diff --git a/WebApp/Controllers/CommentApiController.cs b/WebApp/Controllers/CommentWebApiController.cs similarity index 76% rename from WebApp/Controllers/CommentApiController.cs rename to WebApp/Controllers/CommentWebApiController.cs index 0ab9a9a..3ac5860 100644 --- a/WebApp/Controllers/CommentApiController.cs +++ b/WebApp/Controllers/CommentWebApiController.cs @@ -9,7 +9,7 @@ namespace WebApp.Controllers { - public class CommentApiController : ApiController + public class CommentWebApiController : ApiController { private static ICommentLogic _commentLogic = new CommentLogic(); @@ -29,21 +29,13 @@ public List GetAllComment() public CommentWithoutObjectId GetById(String id) { var comment = _commentLogic.GetById(id); - if (comment == null) - { - throw new Exception("Bad id"); - } return comment; } - [HttpPut, Route("Comment/id{id}")] + [HttpPut, Route("api/Comment/id{id}")] public CommentWithoutObjectId UpdateById(String id, String name, String text) { - var comment = _commentLogic.UpdateById(id, name, text); - if (comment == null) - { - throw new Exception("Bad id"); - } + var comment = _commentLogic.UpdateById(id, name, text); return comment; } } diff --git a/WebApp/Controllers/ImageController.cs b/WebApp/Controllers/ImageController.cs index 6bb9122..839b066 100644 --- a/WebApp/Controllers/ImageController.cs +++ b/WebApp/Controllers/ImageController.cs @@ -12,7 +12,7 @@ namespace WebApp.Controllers { public class ImageController:Controller { - private IImageLogic _imageLogic = new ImageLogic(); + private static IImageLogic _imageLogic = new ImageLogic(); [HttpPost, Route("Image/id{simageId}/comment")] public JsonResult AddCommentToImage(String simageId, String text, String name) @@ -37,12 +37,24 @@ public JsonResult DownloadImage(HttpPostedFileBase uploadImage) [HttpGet, Route("Image/id{id}")] public JsonResult GetById(String id) { - return Json(new { Result = _imageLogic.GetById(id), JsonRequestBehavior.AllowGet }); + try { + return Json(new { Result = _imageLogic.GetById(id), JsonRequestBehavior.AllowGet }); + } + catch (Exception e) + { + return Json(e.ToString(), JsonRequestBehavior.AllowGet); + } } [HttpGet, Route("Image/id{simageId}/comment")] public JsonResult GetCommentFromImage(String simageId) { - return Json(_imageLogic.GetCommentFromImage(simageId), JsonRequestBehavior.AllowGet); + try { + return Json(_imageLogic.GetCommentFromImage(simageId), JsonRequestBehavior.AllowGet); + } + catch (Exception e) + { + return Json(e.ToString(), JsonRequestBehavior.AllowGet); + } } [HttpGet, Route("Image")] public JsonResult Index() @@ -51,8 +63,14 @@ public JsonResult Index() } [HttpPut, Route("Image/id{id}")] public JsonResult UpdateById(String id, String name, String url) - { - return Json(_imageLogic.UpdateById(id, name, url), JsonRequestBehavior.AllowGet); + { + try { + return Json(_imageLogic.UpdateById(id, name, url), JsonRequestBehavior.AllowGet); + } + catch (Exception e) + { + return Json(e.ToString(), JsonRequestBehavior.AllowGet); + } } } } \ No newline at end of file diff --git a/WebApp/Controllers/ImageApiController.cs b/WebApp/Controllers/ImageWebApiController.cs similarity index 97% rename from WebApp/Controllers/ImageApiController.cs rename to WebApp/Controllers/ImageWebApiController.cs index 2a0f677..44dd14f 100644 --- a/WebApp/Controllers/ImageApiController.cs +++ b/WebApp/Controllers/ImageWebApiController.cs @@ -9,7 +9,7 @@ namespace WebApp.Controllers { - public class ImageApiController + public class ImageWebApiController:ApiController { private IImageLogic _imageLogic = new ImageLogic(); diff --git a/WebApp/Controllers/ProjectController.cs b/WebApp/Controllers/ProjectController.cs index ab8c6f0..5c65fc4 100644 --- a/WebApp/Controllers/ProjectController.cs +++ b/WebApp/Controllers/ProjectController.cs @@ -1,265 +1,116 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Web; using System.Web.Mvc; using MongoDB.Bson; using DB.Models; -using System.Web.Helpers; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using DB.Interfaces; +using ControllersLogic.Interfaces; +using ControllersLogic.Logic; namespace WebApp.Controllers { public class ProjectController : Controller { - private IProjectRepository _projectRepository = new DB.Repositories.DBProjectRepository(); - private IImageRepository _imageRepository = new DB.Repositories.DBImageRepository(); - private ICommentRepository _commentRepository = new DB.Repositories.DBCommentRepository(); + private IProjectLogic _projectLogic = new ProjectLogic(); [HttpPost, Route("Project/id{sprojectId}/Comment")] public JsonResult AddCommentToProject(String text, String name, String sprojectId) { - var projectId = new ObjectId(); - if (!ObjectId.TryParse(sprojectId, out projectId)) - { - var result = new { Result = "Bad id it's not objectId" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(projectId) == null) - { - var result = new { Result = "Bad id it's not found in DB" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - Comment comment = new Comment(); - comment.Text = text; - comment.CreationelData = DateTime.UtcNow; - comment.Name = name; - comment.Version = 1; - var commentId = _commentRepository.AddComment(comment).Id; - _projectRepository.AddCommentToProject(commentId, projectId); - return Json(new { Result = commentId.ToString() }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.AddCommentToProject(text, name, sprojectId) }, JsonRequestBehavior.AllowGet); } [HttpPost, Route("Project/id{sprojectId}/Image")] public JsonResult AddImageToProject(String url, String name, String sprojectId) - { - var projectId = new ObjectId(); - if (!ObjectId.TryParse(sprojectId, out projectId)) - { - var result = new { Result = "Bad id it's not objectId" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(projectId) == null) - { - var result = new { Result = "Bad id it's not found in DB" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - Image image = new Image(); - image.Url = url; - image.Version = 1; - image.Name = name; - image.CreationelData = DateTime.UtcNow; - var imageId = _imageRepository.AddImage(image).Id; - _projectRepository.AddImageToProject(imageId, projectId); - return Json(new { Result = imageId.ToString() }, JsonRequestBehavior.AllowGet); + { + return Json(new { Result = _projectLogic.AddImageToProject(url, name, sprojectId) }, JsonRequestBehavior.AllowGet); } [HttpPost, Route("Project")] public JsonResult AddProject(String name) { - Project project = new Project(); - project.Name = name; - project.Version = 1; - project.CreationelData = DateTime.UtcNow; - var id = _projectRepository.AddProject(project).Id.ToString(); - return Json(new { Result = id }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.AddProject(name) }, JsonRequestBehavior.AllowGet); } [HttpPost, Route("Project/id{sidRoot}/project")] public JsonResult AddProjectToProject(String sidRoot, String name) { - var idRoot = new ObjectId(); - if (!ObjectId.TryParse(sidRoot, out idRoot)) - { - var result = new { Result = "Bad id it's not objectId" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(idRoot) == null) - { - var result = new { Result = "Bad id it's not found in DB" }; - return Json(result, JsonRequestBehavior.AllowGet); - } - Project project = new Project(); - project.Name = name; - project.Version = 1; - project.CreationelData = DateTime.UtcNow; - var idNew = _projectRepository.AddProject(project).Id; - _projectRepository.AddProjectToProject(idNew, idRoot); - return Json(new { Result = idNew.ToString() }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.AddProjectToProject(sidRoot, name) }, JsonRequestBehavior.AllowGet); } [HttpDelete, Route("Project/id{id}")] public JsonResult DeleteById(String id) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(objectId) == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - _projectRepository.DeleteById(objectId); - return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.DeleteById(id) }, JsonRequestBehavior.AllowGet); } [HttpDelete, Route("Project/id{projectId}/comment/id{commentId}")] public JsonResult DeleteCommentFromProject(String projectId, String commentId) { - var objectIdProject = new ObjectId(); - var objectIdComment = new ObjectId(); - if (!ObjectId.TryParse(projectId, out objectIdProject)) - { - return Json(new { Result = "Bad id project it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (!ObjectId.TryParse(commentId, out objectIdComment)) - { - return Json(new { Result = "Bad id coomment it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(objectIdProject) == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - _projectRepository.DeleteCommentFromProject(objectIdProject, objectIdComment); - _commentRepository.DeleteById(objectIdComment); - return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.DeleteCommentFromProject(projectId, commentId)}, JsonRequestBehavior.AllowGet); } [HttpDelete, Route("Project/id{projectId}/image/id{imageId}")] public JsonResult DeleteImageFromProject(String projectId, String imageId) { - var objectIdProject = new ObjectId(); - var objectIdImage = new ObjectId(); - if (!ObjectId.TryParse(projectId, out objectIdProject)) - { - return Json(new { Result = "Bad id project it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (!ObjectId.TryParse(imageId, out objectIdImage)) - { - return Json(new { Result = "Bad id image it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (_projectRepository.GetProjectById(objectIdProject) == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); - } - _projectRepository.DeleteImageFromProject(objectIdProject, objectIdImage); - _imageRepository.DeleteById(objectIdImage); - return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.DeleteImageFromProject(projectId, imageId) }, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Project/id{id}")] public JsonResult GetById(String id) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) + try { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) - { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = _projectLogic.GetById(id) }, JsonRequestBehavior.AllowGet); } - var project = ProjectWithoutObjectId.ProjectToProjectWithoutObjectId(_projectRepository.GetProjectById(objectId)); - if (project == null) + catch (Exception e) { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = e.ToString() }, JsonRequestBehavior.AllowGet); } - return Json(project, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Project/id{sidRoot}/Comment")] public JsonResult GetCommentsFormProject(String sidRoot) { - var idRoot = new ObjectId(); - if (!ObjectId.TryParse(sidRoot, out idRoot)) + try { - var result = new List(); - result.Add(new { Result = "Bad id it's not objectId" }); - return Json(result, JsonRequestBehavior.AllowGet); + return Json(_projectLogic.GetCommentsFormProject(sidRoot), JsonRequestBehavior.AllowGet); } - var project = _projectRepository.GetProjectById(idRoot); - if (project == null) + catch (Exception e) { - var result = new List(); - result.Add(new { Result = "Bad id it's not found in DB" }); - return Json(result, JsonRequestBehavior.AllowGet); + return Json(new { Result = e.ToString() }, JsonRequestBehavior.AllowGet); } - var movies = CommentWithoutObjectId.CommentsToCommentWithoutObjectId(_commentRepository.GetCommentsByIds(project.Comments)); - return Json(movies, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Project/id{sidRoot}/Image")] public JsonResult GetImagesFormProject(String sidRoot) { - var idRoot = new ObjectId(); - if (!ObjectId.TryParse(sidRoot, out idRoot)) + try { - var result = new List(); - result.Add(new { Result = "Bad id it's not objectId" }); - return Json(result, JsonRequestBehavior.AllowGet); + return Json(_projectLogic.GetImagesFormProject(sidRoot), JsonRequestBehavior.AllowGet); } - var project = _projectRepository.GetProjectById(idRoot); - if (project == null) + catch (Exception e) { - var result = new List(); - result.Add(new { Result = "Bad id it's not found in DB" }); - return Json(result, JsonRequestBehavior.AllowGet); + return Json(new { Result = e.ToString() }, JsonRequestBehavior.AllowGet); } - var movies = ImageWithoutObjectId.ImagesToImageWithoutObjectId(_imageRepository.GetImagesByIds(project.Images)); - return Json(movies, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Project/id{sidRoot}/Project")] public JsonResult GetPtojectsFormProject(String sidRoot) { - var idRoot = new ObjectId(); - if (!ObjectId.TryParse(sidRoot, out idRoot)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); + try + { + return Json(_projectLogic.GetPtojectsFormProject(sidRoot), JsonRequestBehavior.AllowGet); } - var project = _projectRepository.GetProjectById(idRoot); - if (project == null) + catch (Exception e) { - return Json(new { Result = "Bad id it's not found in DB" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = e.ToString() }, JsonRequestBehavior.AllowGet); } - var movies = ProjectWithoutObjectId.ProjectsToProjectWithoutObjectId(_projectRepository.GetProjectsByIds(project.Projects)); - return Json(movies, JsonRequestBehavior.AllowGet); } [HttpGet, Route("Project")] public JsonResult Index() { - var projects = ProjectWithoutObjectId.ProjectsToProjectWithoutObjectId(_projectRepository.GetAllProject()); - return Json(projects, JsonRequestBehavior.AllowGet); + return Json(_projectLogic.GetAllProjects(), JsonRequestBehavior.AllowGet); } [HttpPut, Route("Project/id{id}")] public JsonResult UpdateById(String id, String name) { - var objectId = new ObjectId(); - if (!ObjectId.TryParse(id, out objectId)) - { - return Json(new { Result = "Bad id it's not objectId" }, JsonRequestBehavior.AllowGet); - } - if (objectId == null) + try { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(_projectLogic.UpdateById(id, name), JsonRequestBehavior.AllowGet); } - var project = _projectRepository.GetProjectById(objectId); - if (project == null) + catch (Exception e) { - return Json(new { Result = "Bad id" }, JsonRequestBehavior.AllowGet); + return Json(new { Result = e.ToString() }, JsonRequestBehavior.AllowGet); } - project.Name = name; - project.Version++; - _projectRepository.DeleteById(objectId); - _projectRepository.AddProject(project); - return Json(ProjectWithoutObjectId.ProjectToProjectWithoutObjectId(project), JsonRequestBehavior.AllowGet); } } } \ No newline at end of file diff --git a/WebApp/Controllers/ProjectWebApiController.cs b/WebApp/Controllers/ProjectWebApiController.cs new file mode 100644 index 0000000..51be8d4 --- /dev/null +++ b/WebApp/Controllers/ProjectWebApiController.cs @@ -0,0 +1,80 @@ +using System.Web.Http; +using System; +using ControllersLogic.Interfaces; +using ControllersLogic.Logic; +using DB.Models; +using System.Collections.Generic; + +namespace WebApp.Controllers +{ + public class ProjectWebApiController:ApiController + { + private IProjectLogic _projectLogic = new ProjectLogic(); + + [HttpPost, Route("api/Project/id{sprojectId}/Comment")] + public String AddCommentToProject(String text, String name, String sprojectId) + { + return _projectLogic.AddCommentToProject(text, name, sprojectId); + } + [HttpPost, Route("api/Project/id{sprojectId}/Image")] + public String AddImageToProject(String url, String name, String sprojectId) + { + return _projectLogic.AddImageToProject(url, name, sprojectId); + } + [HttpPost, Route("api/Project")] + public String AddProject(String name) + { + return _projectLogic.AddProject(name); + } + [HttpPost, Route("api/Project/id{sidRoot}/project")] + public String AddProjectToProject(String sidRoot, String name) + { + return _projectLogic.AddProjectToProject(sidRoot, name); + } + [HttpDelete, Route("api/Project/id{id}")] + public String DeleteById(String id) + { + return _projectLogic.DeleteById(id); + } + [HttpDelete, Route("api/Project/id{projectId}/comment/id{commentId}")] + public String DeleteCommentFromProject(String projectId, String commentId) + { + return _projectLogic.DeleteCommentFromProject(projectId, commentId); + } + [HttpDelete, Route("api/Project/id{projectId}/image/id{imageId}")] + public String DeleteImageFromProject(String projectId, String imageId) + { + return _projectLogic.DeleteImageFromProject(projectId, imageId); + } + [HttpGet, Route("api/Project/id{id}")] + public ProjectWithoutObjectId GetById(String id) + { + return _projectLogic.GetById(id); + } + [HttpGet, Route("api/Project/id{sidRoot}/Comment")] + public List GetCommentsFormProject(String sidRoot) + { + return _projectLogic.GetCommentsFormProject(sidRoot); + } + [HttpGet, Route("api/Project/id{sidRoot}/Image")] + public List GetImagesFormProject(String sidRoot) + { + return _projectLogic.GetImagesFormProject(sidRoot); + } + [HttpGet, Route("api/Project/id{sidRoot}/Project")] + public List GetPtojectsFormProject(String sidRoot) + { + return _projectLogic.GetPtojectsFormProject(sidRoot); + } + [HttpGet, Route("api/Project")] + public List Index() + { + return _projectLogic.GetAllProjects(); + } + [HttpPut, Route("api/Project/id{id}")] + public ProjectWithoutObjectId UpdateById(String id, String name) + { + return _projectLogic.UpdateById(id, name); + } + } +} \ No newline at end of file diff --git a/WebApp/Views/Home/About.cshtml b/WebApp/Views/Home/About.cshtml deleted file mode 100644 index 4b2d9e8..0000000 --- a/WebApp/Views/Home/About.cshtml +++ /dev/null @@ -1,7 +0,0 @@ -@{ - ViewBag.Title = "About"; -} -

@ViewBag.Title.

-

@ViewBag.Message

- -

Use this area to provide additional information.

diff --git a/WebApp/Views/Home/Index.cshtml b/WebApp/Views/Home/Index.cshtml index d682633..e4b4930 100644 --- a/WebApp/Views/Home/Index.cshtml +++ b/WebApp/Views/Home/Index.cshtml @@ -50,7 +50,7 @@
  • /project/id{id}/project -

    Получить все подпроекты к проекта

    +

    Получить все подпроекты к проекта

  • /project/id{id}/project @@ -59,6 +59,12 @@
  • /project/id{id}/image

    Получить все картинки из корня проекта

    +
  • /project/id{id}/image diff --git a/WebApp/Views/Home/Project.cshtml b/WebApp/Views/Home/Project.cshtml deleted file mode 100644 index 0f4327e..0000000 --- a/WebApp/Views/Home/Project.cshtml +++ /dev/null @@ -1,17 +0,0 @@ -@{ - ViewBag.Title = "Contact"; -} -

    @ViewBag.Title.

    -

    @ViewBag.Message

    - -
    - One Microsoft Way
    - Redmond, WA 98052-6399
    - P: - 425.555.0100 -
    - -
    - Support: Support@example.com
    - Marketing: Marketing@example.com -
    \ No newline at end of file diff --git a/WebApp/Views/Shared/_Layout.cshtml b/WebApp/Views/Shared/_Layout.cshtml index 8549837..f81c784 100644 --- a/WebApp/Views/Shared/_Layout.cshtml +++ b/WebApp/Views/Shared/_Layout.cshtml @@ -18,6 +18,7 @@ @Html.ActionLink("Ease-L", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) + @Html.ActionLink("Documentation", "Index", "Help", new { area = "" }, new { @class = "navbar-brand" })