Ejemplo n.º 1
0
        public IActionResult RegistrationStatus([FromRoute] string eventId, [FromHeader(Name = "Authorization")] string userToken)
        {
            ObjectId userId = new ObjectId(JwtUtil.GetUserIdFromToken(userToken));
            String   status = MongoUtil.GetRegistrationStatus(new ObjectId(eventId), userId);

            return(Ok(status));
        }
Ejemplo n.º 2
0
        public IActionResult RegisterUserToEvent([FromRoute] string eventId, [FromHeader(Name = "Authorization")] string token)
        {
            ObjectId userId = new ObjectId(JwtUtil.GetUserIdFromToken(token));
            Boolean  ok     = MongoUtil.RegisterUserToEvent(new ObjectId(eventId), userId);

            return(Ok(ok));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> SendFileToAnalysis(IFormFile file, [FromHeader] string authorization)
        {
            var model  = JwtUtil.GetUserIdFromToken(authorization);
            var fileId = await _analysisService.SendFileToAnalysis(file, model.UserId);

            return(new OkObjectResult(new SendFileToAnalysisResponse(fileId)));
        }
Ejemplo n.º 4
0
        public IActionResult DeleteReview([FromRoute] String eventId, [FromHeader(Name = "Authorization")] String userToken)
        {
            MongoUtil.DeleteReview(new ObjectId(JwtUtil.GetUserIdFromToken(userToken)),
                                   new ObjectId(eventId));

            return(Ok());
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> AnalyzeFile([FromRoute] Guid id, [FromHeader] string authorization)
        {
            var model  = JwtUtil.GetUserIdFromToken(authorization);
            var taskId = await _analysisService.AnalyzeFile(id, model.UserId);

            return(new AcceptedResult($"api/analysis/{taskId}", new AnalysisResponse(taskId)));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> GetAnalysisReport([FromRoute] Guid id, [FromHeader] string authorization)
        {
            var model = JwtUtil.GetUserIdFromToken(authorization);

            try
            {
                var analysis = await _analysisService.GetByIdAsync(id, model.UserId);

                if (analysis.Status != OperationStatus.Complete)
                {
                    return(BadRequest());
                }

                var report = _reportService.GenerateReport(analysis.ToAnalysisFile(model.UserId));
                return(File(report, "application/pdf"));
            }
            catch (InvalidOperationException e)
            {
                return(new NotFoundResult());
            }
            catch (StreamNotFoundException exception)
            {
                return(new NotFoundResult());
            }
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> CreateSource(IFormFile file, [FromHeader] string authorization)
        {
            var model  = JwtUtil.GetUserIdFromToken(authorization);
            var taskId = await _sourceService.CreateSource(file, model.UserId);

            return(new AcceptedResult($"api/source/{taskId}", new CreateSourceResponse(taskId)));
        }
Ejemplo n.º 8
0
        public IActionResult ChangePassword([FromBody] UserApiModel newPass, [FromHeader(Name = "Authorization")] string token)
        {
            ObjectId userId = new ObjectId(JwtUtil.GetUserIdFromToken(token));

            MongoUtil.ChangePassword(userId, newPass.Password);

            return(Ok());
        }
Ejemplo n.º 9
0
        public IActionResult Created([FromRoute] int pageSize, [FromRoute] int pageId, [FromHeader(Name = "Authorization")] string token)
        {
            ObjectId userId = new ObjectId(JwtUtil.GetUserIdFromToken(token));

            return(Ok(MongoUtil.GetCreatedEvents(userId, pageSize, pageId)
                      .ConvertAll(new Converter <EventModel, EventApiModel>(e => {
                return e.getEventApiModel();
            }))));
        }
Ejemplo n.º 10
0
        public IActionResult EditReview([FromRoute] String eventId, [FromHeader(Name = "Authorization")] String userToken, [FromBody] ReviewApiModel reviewApiModel)
        {
            MongoUtil.EditReview(new ObjectId(JwtUtil.GetUserIdFromToken(userToken)),
                                 new ObjectId(eventId),
                                 reviewApiModel.Rating,
                                 reviewApiModel.Opinion,
                                 DateTime.Now);

            return(Ok());
        }
Ejemplo n.º 11
0
        public IActionResult Create([FromHeader(Name = "Authorization")] string token, [FromBody] EventApiModel eventApiModel)
        {
            String     userId     = JwtUtil.GetUserIdFromToken(token);
            EventModel eventModel = eventApiModel.getEventModel(userId, DateTime.Now);

            eventModel.Image = "StaticFiles/Images/standard.jpg";
            MongoUtil.AddEvent(eventModel);

            return(Ok("Event created"));
        }
Ejemplo n.º 12
0
        public IActionResult WhoIAm([FromHeader(Name = "Authorization")] string token)
        {
            ObjectId     userId = new ObjectId(JwtUtil.GetUserIdFromToken(token));
            UserModel    um     = MongoUtil.GetUser(userId);
            UserApiModel uam    = um.getUserApiModel();

            uam.Password = "";
            uam.Birthday = "";

            return(Ok(uam));
        }
Ejemplo n.º 13
0
        public IActionResult GetReviewsStats([FromHeader(Name = "Authorization")] string token, [FromRoute] string eventId)
        {
            string     userId = JwtUtil.GetUserIdFromToken(token);
            EventModel ev     = MongoUtil.GetEvent(new ObjectId(eventId));

            if (ev.CreatorId == new ObjectId(userId))
            {
                return(Ok(MongoUtil.getReviewsStats(new ObjectId(eventId))));
            }

            return(Unauthorized());
        }
Ejemplo n.º 14
0
        public IActionResult Reviewed([FromRoute] int pageSize, [FromRoute] int pageId, [FromHeader(Name = "Authorization")] string token)
        {
            ObjectId             userId  = new ObjectId(JwtUtil.GetUserIdFromToken(token));
            List <ReviewModel>   reviews = MongoUtil.GetUserReviews(userId, pageSize, pageId);
            List <EventApiModel> events  = new List <EventApiModel>();

            foreach (ReviewModel review in reviews)
            {
                events.Add(MongoUtil.GetEvent(review.EventId).getEventApiModel());
            }

            return(Ok(events));
        }
Ejemplo n.º 15
0
        public IActionResult GetReview([FromRoute] string eventId, [FromHeader(Name = "Authorization")] string userToken)
        {
            ObjectId    userId = new ObjectId(JwtUtil.GetUserIdFromToken(userToken));
            ReviewModel review = MongoUtil.GetReview(userId, new ObjectId(eventId));
            UserModel   user   = MongoUtil.GetUser(userId);

            if (review != null)
            {
                return(Ok(review.getReviewApiModel(user.Name)));
            }

            return(Ok(new ReviewModel {
                Rating = 0, Opinion = ""
            }));
        }
Ejemplo n.º 16
0
        public async Task <IActionResult> GetUserDocumentsWithLatestStatuses([FromHeader] string authorization)
        {
            var model = JwtUtil.GetUserIdFromToken(authorization);

            try
            {
                var documents = await _documentsToAnalysisService.GetDocumentsWithLatestAnalysisStatuses(model.UserId);

                return(new OkObjectResult(documents));
            }
            catch (StreamNotFoundException ex)
            {
                return(new OkObjectResult(new List <AnalysisStatusDto>()));
            }
        }
Ejemplo n.º 17
0
        public IActionResult GetMessages([FromRoute] String eventId, [FromHeader(Name = "Authorization")] string token)
        {
            ObjectId               reqUserId   = new ObjectId(JwtUtil.GetUserIdFromToken(token));
            List <MessageModel>    messages    = MongoUtil.GetMessages(new ObjectId(eventId));
            List <MessageApiModel> apiMessages = messages.ConvertAll(new Converter <MessageModel, MessageApiModel>(msg => {
                ObjectId pubUserId = msg.UserId;
                if (pubUserId == reqUserId)
                {
                    return(msg.getMessageApiModel());
                }
                msg.DateSent = msg.DateSent.AddHours(3);
                return(msg.getMessageApiModel(MongoUtil.GetUser(pubUserId).Name));
            }));

            return(Ok(apiMessages));
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> GetUserAnalyses([FromHeader] string authorization)
        {
            var model = JwtUtil.GetUserIdFromToken(authorization);

            try
            {
                var allAnalysis = await _analysisService.GetUserAnalysesAsync(model.UserId);

                var dtos = allAnalysis.Select(analysis => new AnalysisDto(analysis.DocumentName, analysis.DocumentId,
                                                                          analysis.TaskId, Enum.GetName(typeof(OperationStatus), analysis.Status),
                                                                          analysis.LatestChangeDate, analysis.Result));

                return(new OkObjectResult(dtos));
            }
            catch (StreamNotFoundException ex)
            {
                return(new OkObjectResult(new List <AnalysisDto>()));
            }
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> GetAnalysisResult(Guid id, [FromHeader] string authorization)
        {
            var model = JwtUtil.GetUserIdFromToken(authorization);

            try
            {
                var analysis = await _analysisService.GetByIdAsync(model.UserId, id);

                return(new OkObjectResult(new AnalysisFileResponse(analysis.ToAnalysisFile(model.UserId))));
            }
            catch (InvalidOperationException exception)
            {
                return(new NotFoundResult());
            }
            catch (StreamNotFoundException exception)
            {
                return(new NotFoundResult());
            }
        }
Ejemplo n.º 20
0
        public IActionResult Upload([FromHeader(Name = "Authorization")] string token)
        {
            try
            {
                String userId     = JwtUtil.GetUserIdFromToken(token);
                var    file       = Request.Form.Files[0];
                var    folderName = Path.Combine("StaticFiles", "Images");
                var    pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);

                if (file.Length > 0)
                {
                    var fileName = userId + "_" + DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString() + ".jpg";
                    var fullPath = Path.Combine(pathToSave, fileName);

                    using (var stream = new FileStream(fullPath, FileMode.Create))
                    {
                        file.CopyTo(stream);
                    }

                    List <EventModel> eventList = MongoUtil.GetCreatedEvents(new ObjectId(userId), 1, 0);
                    if (eventList.Count > 0 && eventList[0].Image == "StaticFiles/Images/standard.jpg")
                    {
                        string newImage = "StaticFiles/Images/" + fileName;
                        MongoUtil.UpdateImage(eventList[0].Id, newImage);
                    }


                    return(Ok("Image updated"));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error"));
            }
        }
Ejemplo n.º 21
0
        public IActionResult GetRecommendations([FromHeader(Name = "Authorization")] string token, [FromRoute] int pageSize, [FromRoute] int pageId)
        {
            string userId   = JwtUtil.GetUserIdFromToken(token);
            string filename = @"eventRecommenderTestedOnMovieLensSmallDataSet\predictions\" + userId.ToString() + ".txt";

            if (!System.IO.File.Exists(filename))
            {
                Process cmd = new Process();
                cmd.StartInfo.FileName  = "cmd.exe";
                cmd.StartInfo.Arguments = "/C cd eventRecommenderTestedOnMovieLensSmallDataSet & Python35\\python.exe predict.py " + userId;
                cmd.Start();
                cmd.WaitForExit();
            }

            List <EventApiModel> apiEvents = new List <EventApiModel>();

            if (System.IO.File.Exists(filename))
            {
                using (StreamReader reader = new StreamReader(filename))
                {
                    for (int i = 0; i < pageSize * pageId && !reader.EndOfStream; i++)
                    {
                        reader.ReadLine();
                    }

                    for (int i = 0; i < pageSize && !reader.EndOfStream; i++)
                    {
                        string     line       = reader.ReadLine();
                        string[]   values     = line.Split(',');
                        string     eventIdStr = values[0];
                        ObjectId   eventId    = new ObjectId(eventIdStr);
                        EventModel em         = MongoUtil.GetEvent(eventId);
                        apiEvents.Add(em.getEventApiModel());
                    }
                }
            }

            return(Ok(apiEvents));
        }
Ejemplo n.º 22
0
        private async Task PingRequest(HttpContext context, WebSocket socket)
        {
            var buffer = new byte[600 * 1024];
            WebSocketReceiveResult result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

            string received = Encoding.Default.GetString(buffer, 0, result.Count);

            string[] splits     = received.Split(' ');
            string   eventIdStr = splits[0];
            ObjectId eventId    = new ObjectId(eventIdStr);

            ObjectId userId   = new ObjectId(JwtUtil.GetUserIdFromToken("Bearer " + splits[1]));
            string   userName = MongoUtil.GetUser(userId).Name;

            if (chatRooms.ContainsKey(eventIdStr))
            {
                chatRooms[eventIdStr].Add(socket);
            }
            else
            {
                chatRooms.AddOrUpdate(eventIdStr, new ConcurrentBag <WebSocket> {
                    socket
                }, (string x, ConcurrentBag <WebSocket> y) => { return(null); });
            }

            while (!result.CloseStatus.HasValue)
            {
                result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

                received = Encoding.Default.GetString(buffer, 0, result.Count);

                if (received == "")
                {
                    continue;
                }

                MessageModel msg = new MessageModel
                {
                    Message  = received,
                    UserId   = userId,
                    EventId  = eventId,
                    DateSent = DateTime.Now
                };

                MongoUtil.SaveMessage(msg);
                MessageApiModel msgApi = msg.getMessageApiModel(userName);
                string          toSend = msgApi.Message + "!#|||#!" + msgApi.DateSent + "!#|||#!" + msgApi.userName;
                Encoding.ASCII.GetBytes(toSend, 0, toSend.Length, buffer, 0);

                foreach (WebSocket ws in chatRooms[eventIdStr])
                {
                    if (ws != socket)
                    {
                        if (ws.State == WebSocketState.Open)
                        {
                            ws.SendAsync(new ArraySegment <byte>(buffer, 0, toSend.Length), result.MessageType, result.EndOfMessage, CancellationToken.None);
                        }
                    }
                }
            }

            await socket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
        }