Beispiel #1
0
        public async static Task <IActionResult> GetRoomsBySemesterId(RoomDBContext context, int semesterId)
        {
            try
            {
                var response = new List <RoomResponse>();
                var listRoom = RoomDAO.GetRoomBySemester(context, semesterId);
                foreach (var room in listRoom)
                {
                    response.Add(new RoomResponse
                    {
                        RoomId     = room.RoomId,
                        RoomName   = room.Subject + "-" + room.ClassName,
                        TeacherId  = room.CreatorId,
                        Image      = room.Image,
                        SemesterId = (int)room.SemesterId
                    });
                }

                return(new OkObjectResult(response));
            }
            catch (Exception e)
            {
                return(new ObjectResult(new { message = e.Message })
                {
                    StatusCode = 500,
                });
            }
        }
Beispiel #2
0
        public async static Task <IActionResult> DeleteRoom(RoomDBContext context, int roomId, IWebHostEnvironment env)
        {
            var room = RoomDAO.Get(context, roomId);

            if (room != null)
            {
                var roomUserLinks  = RoomUserLinkDAO.GetRoomLink(context, roomId);
                var roomChats      = RoomChatDAO.GetChatByRoomId(context, roomId);
                var roomTimetables = TimetableDAO.GetByRoomId(context, roomId);
                var groups         = RoomDAO.GetGroupByRoom(context, roomId);

                var result = await RoomUserLinkDAO.Delete(context, roomUserLinks);

                result = await RoomChatDAO.DeleteRoomChat(context, roomChats);

                result = await TimetableDAO.DeleteTimeTable(context, roomTimetables);

                foreach (var group in groups)
                {
                    result = await DeleteRoom(context, group.RoomId, env);
                }

                var path = Path.Combine(env.ContentRootPath, $"Files/{roomId}");
                if (Directory.Exists(path))
                {
                    Directory.Delete(path, true);
                }

                result = await RoomDAO.Delete(context, room);

                return(result);
            }
            return(new BadRequestObjectResult(new { message = "Class now exist!" }));
        }
Beispiel #3
0
        public RoomServiceTest()
        {
            //setting up context
            factory  = new ConnectionFactory();
            _context = factory.CreateRoomDbContextForInMemory();
            _context.Database.EnsureDeleted();
            _context.Database.EnsureCreated();
            _context.SaveChanges();
            var room = new Room()
            {
                RoomId     = 1,
                Subject    = "testSubject",
                ClassName  = "testName",
                CreatorId  = "testUser",
                SemesterId = 1
            };

            RoomDAO.Create(_context, room);

            var chats = new List <RoomChat>();

            chats.Add(new RoomChat()
            {
                Id = 1, RoomId = 1, UserId = "testUser", Date = DateTime.Now, Content = "testChat", Type = 1,
            });
            chats.Add(new RoomChat()
            {
                Id = 2, RoomId = 1, UserId = "testUser", Date = DateTime.Now, Content = "testChat", Type = 1,
            });
            chats.Add(new RoomChat()
            {
                Id = 3, RoomId = 1, UserId = "testUser", Date = DateTime.Now, Content = "testChat", Type = 1,
            });

            foreach (var chat in chats)
            {
                RoomChatDAO.Create(_context, chat);
            }

            var links = new List <RoomUserLink>();

            links.Add(new RoomUserLink()
            {
                RoomId = 1, RoomUserId = 1, UserId = "testUser"
            });
            links.Add(new RoomUserLink()
            {
                RoomId = 1, RoomUserId = 2, UserId = "testUser1"
            });
            links.Add(new RoomUserLink()
            {
                RoomId = 1, RoomUserId = 3, UserId = "testUser2"
            });

            RoomUserLinkDAO.Create(_context, links);


            _env = new Mock <IWebHostEnvironment>();
            _env.Setup(f => f.ContentRootPath).Returns("");
        }
Beispiel #4
0
        public static GroupResponse GroupUpdate(RoomDBContext context, HttpRequest request)
        {
            var groupId     = Convert.ToInt32(request.Form["groupId"]);
            var listUserIds = (IEnumerable <string>)JsonConvert.DeserializeObject <List <string> >(request.Form["userIds"]);
            var existLinks  = (IEnumerable <string>)context.RoomUserLink.Where(link => link.RoomId == groupId).Select(link => link.UserId).ToList();

            var group = RoomDAO.Get(context, groupId);

            if (group != null)
            {
                var deleteUserIds = existLinks.Except(listUserIds).ToList();
                var addUserIds    = listUserIds.Except(existLinks).ToList();

                var deleteLinks = deleteUserIds.Select(item => RoomUserLinkDAO.GetRoomUserLink(context, groupId, item)).ToList();

                var addLinks = addUserIds.Select(item => new RoomUserLink
                {
                    UserId = item,
                    RoomId = group.RoomId
                }).ToList();

                var result = RoomUserLinkDAO.Create(context, addLinks);
                result = RoomUserLinkDAO.Delete(context, deleteLinks);

                return(new GroupResponse
                {
                    GroupId = group.RoomId,
                    Name = group.Subject,
                    UserIds = RoomUserLinkDAO.GetRoomLink(context, group.RoomId).Select(item => item.UserId).ToList(),
                    StartTime = group.StartDate.ToUniversalTime(),
                    EndTime = group.EndDate.ToUniversalTime()
                });
            }
            return(null);
        }
Beispiel #5
0
        public static List <Room> GetRoomsByUserId(RoomDBContext context, string userId)
        {
            var roomIds = context.RoomUserLink.Where(x => x.UserId == userId).Select(x => x.RoomId).ToList();

            return(context.Room
                   .Where(x => roomIds.Contains(x.RoomId) && !x.Group)
                   .ToList());
        }
Beispiel #6
0
 public RoomDAOTest()
 {
     factory     = new ConnectionFactory();
     roomContext = factory.CreateRoomDbContextForInMemory();
     roomContext.Database.EnsureDeleted();
     roomContext.Database.EnsureCreated();
     roomContext.SaveChanges();
 }
Beispiel #7
0
 public PublicService(UserManager <AppUser> userManager
                      , RoomDBContext roomContext
                      , ILogDAO logDAO
                      , UserDbContext userContext)
 {
     _roomContext = roomContext;
     _userManager = userManager;
     _logDAO      = logDAO;
     _userContext = userContext;
 }
Beispiel #8
0
 public RoomsController(RoomDBContext roomContext, UserDbContext userContext, IWebHostEnvironment env, IEmailSender emailSender)
 {
     _roomContext      = roomContext;
     _userContext      = userContext;
     _env              = env;
     _emailSender      = emailSender;
     _contractResolver = new DefaultContractResolver
     {
         NamingStrategy = new CamelCaseNamingStrategy()
     };
 }
Beispiel #9
0
        public RoomDBContext CreateRoomDbContextForInMemory()
        {
            var option = new DbContextOptionsBuilder <RoomDBContext>().UseInMemoryDatabase(databaseName: "Test_Database").Options;

            var context = new RoomDBContext(option);

            if (context != null)
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
            }

            return(context);
        }
Beispiel #10
0
        public static async Task <IActionResult> KickFromRoom(RoomDBContext context, int roomId, string userId)
        {
            var roomUserLink = RoomUserLinkDAO.GetRoomUserLink(context, roomId, userId);

            if (roomUserLink != null)
            {
                return(await RoomUserLinkDAO.Delete(context, roomUserLink));
            }
            else
            {
                return(new ObjectResult(new { type = 1, message = "user not in the room" })
                {
                    StatusCode = 200,
                });
            }
        }
Beispiel #11
0
        public static List <RoomResponse> GetRoomByUserId(RoomDBContext context, string userId)
        {
            var rooms    = RoomDAO.GetRoomsByUserId(context, userId);
            var response = new List <RoomResponse>();

            foreach (var room in rooms)
            {
                response.Add(new RoomResponse
                {
                    RoomId    = room.RoomId,
                    RoomName  = room.Subject + "-" + room.ClassName,
                    TeacherId = room.CreatorId,
                    Image     = room.Image,
                    StartDate = room.StartDate,
                    EndDate   = room.EndDate,
                });
            }
            return(response);
        }
Beispiel #12
0
 public static async Task <IActionResult> DeleteRoomChat(RoomDBContext context, List <RoomChat> roomChats)
 {
     try
     {
         context.RoomChat.RemoveRange(roomChats);
         context.SaveChanges();
         return(new ObjectResult(new { message = "success" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #13
0
 public static async Task <IActionResult> Create(RoomDBContext context, RoomChat roomChat)
 {
     try
     {
         context.RoomChat.Add(roomChat);
         context.SaveChanges();
         return(new ObjectResult(new { message = "Add success!" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #14
0
 public static async Task <IActionResult> Update(RoomDBContext context, Semester semester)
 {
     try
     {
         context.Semester.Update(semester);
         context.SaveChanges();
         return(new ObjectResult(new { message = "success" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #15
0
 public static IActionResult Update(RoomDBContext context, Timetable timetable)
 {
     try
     {
         context.TimeTable.UpdateRange(timetable);
         context.SaveChanges();
         return(new ObjectResult(new { message = "Add success!" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #16
0
 public static IActionResult UpdateRoom(RoomDBContext context, Room room)
 {
     try
     {
         context.Room.Update(room);
         context.SaveChanges();
         return(new ObjectResult(new { message = "Successful" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #17
0
        public static List <GroupResponse> GetGroupByRoomId(RoomDBContext context, int roomId)
        {
            var groups    = RoomDAO.GetGroupByRoom(context, roomId);
            var responses = new List <GroupResponse>();

            foreach (var group in groups)
            {
                var response = new GroupResponse
                {
                    GroupId   = group.RoomId,
                    Name      = group.Subject,
                    UserIds   = RoomUserLinkDAO.GetRoomLink(context, group.RoomId).Select(item => item.UserId).ToList(),
                    StartTime = group.StartDate.ToUniversalTime(),
                    EndTime   = group.EndDate.ToUniversalTime()
                };
                responses.Add(response);
            }
            return(responses);
        }
Beispiel #18
0
        public RoomChatDAOTest()
        {
            factory     = new ConnectionFactory();
            roomContext = factory.CreateRoomDbContextForInMemory();
            roomContext.Database.EnsureDeleted();
            roomContext.Database.EnsureCreated();
            roomContext.SaveChanges();

            var room = new Room()
            {
                RoomId     = 1,
                Subject    = "testSubject",
                ClassName  = "testName",
                CreatorId  = "testUser",
                SemesterId = 1
            };

            RoomDAO.Create(roomContext, room);
        }
Beispiel #19
0
 public static async Task <IActionResult> DeleteTimeTable(RoomDBContext context, List <Timetable> timetables)
 {
     try
     {
         context.TimeTable.RemoveRange(timetables);
         context.SaveChanges();
         return(new ObjectResult(new { message = "delete success!" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #20
0
 public static async Task <IActionResult> Delete(RoomDBContext context, RoomUserLink roomUserLink)
 {
     try
     {
         context.RoomUserLink.Remove(roomUserLink);
         context.SaveChanges();
         return(new ObjectResult(new { message = "success" })
         {
             StatusCode = 200,
         });
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #21
0
        public static async Task <IActionResult> Create(RoomDBContext context, RoomUserLink roomUserLink)
        {
            try
            {
                await context.RoomUserLink.AddAsync(roomUserLink);

                context.SaveChanges();
                return(new ObjectResult("success")
                {
                    StatusCode = 200,
                });
            }
            catch (Exception e)
            {
                return(new ObjectResult(e.Message)
                {
                    StatusCode = 500,
                });
            }
        }
Beispiel #22
0
        public static async Task <IActionResult> Create(RoomDBContext context, List <RoomUserLink> roomUserLinks)
        {
            try
            {
                await context.RoomUserLink.AddRangeAsync(roomUserLinks);

                context.SaveChanges();
                return(new ObjectResult(new { message = "success" })
                {
                    StatusCode = 200,
                });
            }
            catch (Exception e)
            {
                return(new ObjectResult(new { message = e.Message })
                {
                    StatusCode = 500,
                });
            }
        }
Beispiel #23
0
        public static async Task <IActionResult> Create(RoomDBContext context, Timetable timetable)
        {
            try
            {
                await context.TimeTable.AddAsync(timetable);

                context.SaveChanges();
                return(new ObjectResult(new { message = "Add success!" })
                {
                    StatusCode = 200,
                });
            }
            catch (Exception e)
            {
                return(new ObjectResult(new { message = e.Message })
                {
                    StatusCode = 500,
                });
            }
        }
Beispiel #24
0
 public TeacherService(
     UserDbContext usercontext,
     UserManager <AppUser> userManager,
     RoomDBContext roomcontext,
     ILogDAO logDAO,
     IAttendanceDAO attendanceDAO,
     IPrivateMessageDAO privateMessageDAO,
     IEmailSender emailSender,
     IUrlHelperFactory urlHelperFactory,
     IActionContextAccessor actionContextAccessor)
 {
     _userContext           = usercontext;
     _userManager           = userManager;
     _roomContext           = roomcontext;
     _logDAO                = logDAO;
     _attendanceDAO         = attendanceDAO;
     _privateMessageDAO     = privateMessageDAO;
     _emailSender           = emailSender;
     _urlHelperFactory      = urlHelperFactory;
     _actionContextAccessor = actionContextAccessor;
 }
Beispiel #25
0
        protected void Application_Start()
        {
            //移除所有视图引擎
            ViewEngines.Engines.Clear();

            //添加Razor视图引擎
            ViewEngines.Engines.Add(new RazorViewEngine());

            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            using (var ctx = new RoomDBContext())
            {
                var objectContext     = ((IObjectContextAdapter)ctx).ObjectContext;
                var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace);
                mappingCollection.GenerateViews(new List <EdmSchemaError>());
            }
        }
Beispiel #26
0
        public static GroupResponse CreateGroup(RoomDBContext context, HttpRequest request)
        {
            var now = DateTime.Now;

            Room room = new Room
            {
                Subject    = request.Form["name"],
                CreatorId  = request.Form["teacherId"],
                MainRoomId = Convert.ToInt32(request.Form["roomId"]),
                Group      = true,
                StartDate  = now,
                EndDate    = now
            };

            var result = RoomDAO.Create(context, room);
            var group  = RoomDAO.GetLastRoom(context);

            var listUserIds   = JsonConvert.DeserializeObject <List <string> >(request.Form["userIds"]);
            var roomUserLinks = listUserIds.Select(userId => new RoomUserLink
            {
                RoomId = group.RoomId,
                UserId = userId
            }).ToList();
            var existLink = context.RoomUserLink.Where(link => link.RoomId == group.RoomId).ToList();

            if (existLink.Count != 0)
            {
                roomUserLinks = roomUserLinks.Where(link => !existLink.Any(x => x.UserId == link.UserId)).ToList();
            }
            result = RoomUserLinkDAO.Create(context, roomUserLinks);

            return(new GroupResponse
            {
                GroupId = group.RoomId,
                Name = group.Subject,
                UserIds = RoomUserLinkDAO.GetRoomLink(context, group.RoomId).Select(item => item.UserId).ToList(),
                StartTime = group.StartDate.ToUniversalTime(),
                EndTime = group.EndDate.ToUniversalTime()
            });
        }
Beispiel #27
0
 public async static Task <IActionResult> SetGroupTime(RoomDBContext context, HttpRequest request)
 {
     try
     {
         var roomId   = Convert.ToInt32(request.Form["roomId"]);
         var groups   = RoomDAO.GetGroupByRoom(context, roomId);
         var duration = Convert.ToInt32(request.Form["duration"]);
         foreach (var group in groups)
         {
             group.StartDate = Convert.ToDateTime(request.Form["startTime"]);
             group.EndDate   = Convert.ToDateTime(request.Form["startTime"]).AddMinutes(duration);
             RoomDAO.UpdateRoom(context, group);
         }
         return(new OkObjectResult("successful"));
     }
     catch (Exception e)
     {
         return(new ObjectResult(new { message = e.Message })
         {
             StatusCode = 500,
         });
     }
 }
Beispiel #28
0
        public async static Task <IActionResult> ResetGroup(RoomDBContext context, int groupId, IWebHostEnvironment env)
        {
            var roomUserLinks = RoomUserLinkDAO.GetRoomLink(context, groupId);
            var roomChats     = RoomChatDAO.GetChatByRoomId(context, groupId);

            var result = await RoomUserLinkDAO.Delete(context, roomUserLinks);

            result = await RoomChatDAO.DeleteRoomChat(context, roomChats);

            var path = Path.Combine(env.ContentRootPath, $"Files/{groupId}");

            if (Directory.Exists(path))
            {
                Directory.Delete(path, true);
            }
            var group = RoomDAO.Get(context, groupId);
            var now   = DateTime.Now;

            group.EndDate   = now;
            group.StartDate = now;
            RoomDAO.UpdateRoom(context, group);

            return(result);
        }
Beispiel #29
0
 public static RoomUserLink GetRoomUserLink(RoomDBContext context, int roomId, string userId)
 {
     return(context.RoomUserLink.Where(link => link.RoomId == roomId && link.UserId == userId).FirstOrDefault());
 }
Beispiel #30
0
 public static List <RoomUserLink> GetRoomLink(RoomDBContext context, int roomId)
 {
     return(context.RoomUserLink.Where(link => link.RoomId == roomId).ToList());
 }