public ActionResult CreateRequest(IdeasDto.RequestDto requestobj)
        {
            //var userId = new Guid(User.Identity.GetUserId());
            var userId = new Guid("AD350B67-86E3-4AFD-955F-1315B111EAFD");

            var message = "";

            var foundRequest = new IdeasDto().GetIdeaRequest().FirstOrDefault(i => i.IdeaRequesterId == userId && i.IdeasId == requestobj.IdeaId);

            if (foundRequest != null)
            {
                message = foundRequest.RequestType + " request already sent for this project.";
                return(Json(message));
            }

            var obj = new IdeaRequest();

            obj.UserID          = userId;
            obj.UserIdeaID      = requestobj.IdeaId;
            obj.CreatedDateTime = DateTime.Now;
            obj.LastModified    = DateTime.Now;


            //DYNAMICALLY FIND THE FIRST ROUTE FOR THE REQUEST TYPE - THIS IS THE FIRST STEP FOR THE PROCESS
            var route      = new IdeasDto();
            var foundRoute = route.GetIdeaRoutes().FirstOrDefault(r => r.StepNo == 1 && r.RequestType == requestobj.Action);


            if (requestobj.Action == RequestType.Collaborate)
            {
                if (foundRoute != null)
                {
                    obj.IdeaRouteID = foundRoute.RouteId;
                }

                _db.IdeaRequest.Add(obj);
                if (_db.SaveChanges() > 0)
                {
                    message = "Collaboration request submitted";
                }
            }

            if (requestobj.Action == RequestType.Fund)
            {
                if (foundRoute != null)
                {
                    obj.IdeaRouteID = foundRoute.RouteId;
                }

                _db.IdeaRequest.Add(obj);
                if (_db.SaveChanges() > 0)
                {
                    message = "Funding request submitted";
                }
            }
            return(Json(message));
        }
Example #2
0
        public async Task <IActionResult> UpdateIdea(string id, IdeaRequest request)
        {
            // Authenticate requester.
            var jwtToken = Request.Headers["X-Access-Token"];

            if (!tokenHelper.ValidateJwtToken(jwtToken, out SecurityToken validatedToken))
            {
                return(Unauthorized());
            }

            // Sanitize inputs.
            if (request.Content.Length > 255)
            {
                return(BadRequest("Content cannot exceed 255 characters."));
            }
            if (request.Impact < 1 || request.Impact > 10)
            {
                return(BadRequest("Impact must be between 1 and 10."));
            }
            if (request.Ease < 1 || request.Ease > 10)
            {
                return(BadRequest("Ease must be between 1 and 10."));
            }
            if (request.Confidence < 1 || request.Confidence > 10)
            {
                return(BadRequest("Confidence must be between 1 and 10."));
            }

            var idea = await dbContext.Ideas.FindAsync(id);

            // Get the user's ID from the claims.
            var userIdString = HttpContext.User.Claims.First(c => c.Type.Equals("user_id")).Value;
            int userId       = int.Parse(userIdString);

            // Users are only allowed to update their own ideas.
            if (idea.UserId != userId)
            {
                return(Unauthorized());
            }

            // Copy request parameters.
            idea.Content    = request.Content;
            idea.Impact     = (int)request.Impact;
            idea.Ease       = (int)request.Ease;
            idea.Confidence = (int)request.Confidence;

            // Attach idea to context and save.
            dbContext.Entry(idea).State = EntityState.Modified;
            await dbContext.SaveChangesAsync();

            var response = new IdeaResponse(idea.Id, idea.Content, idea.Impact, idea.Ease, idea.Confidence, idea.CreatedAt);

            return(Ok(response));
        }
Example #3
0
        public async Task <ActionResult <Idea> > CreateIdea(IdeaRequest request)
        {
            // Authenticate requester.
            var jwtToken = Request.Headers["X-Access-Token"];

            if (!tokenHelper.ValidateJwtToken(jwtToken, out SecurityToken validatedToken))
            {
                return(Unauthorized());
            }

            // Sanitize inputs.
            if (request.Content.Length > 255)
            {
                return(BadRequest("Content cannot exceed 255 characters."));
            }
            if (request.Impact < 1 || request.Impact > 10)
            {
                return(BadRequest("Impact must be between 1 and 10."));
            }
            if (request.Ease < 1 || request.Ease > 10)
            {
                return(BadRequest("Ease must be between 1 and 10."));
            }
            if (request.Confidence < 1 || request.Confidence > 10)
            {
                return(BadRequest("Confidence must be between 1 and 10."));
            }

            // Get the user's ID from the claims.
            var userIdString = HttpContext.User.Claims.First(c => c.Type.Equals("user_id")).Value;
            int userId       = int.Parse(userIdString);

            var idea = new Idea()
            {
                Id         = await GenerateUniqueId(userId),
                UserId     = userId,
                Content    = request.Content,
                Impact     = (int)request.Impact,
                Ease       = (int)request.Ease,
                Confidence = (int)request.Confidence,
                CreatedAt  = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
            };

            dbContext.Ideas.Add(idea);
            await dbContext.SaveChangesAsync();

            var response = new IdeaResponse(idea.Id, idea.Content, idea.Impact, idea.Ease, idea.Confidence, idea.CreatedAt);

            return(CreatedAtAction(nameof(GetIdeas), response));
        }
        public ActionResult AddBestIdea([FromBody] IdeaRequest req)
        {
            Project proj = _context.Project.Where(p => p.Uid == req.ProjectUid).FirstOrDefault <Project>();

            ProjectParameters param = new ProjectParameters
            {
                Uid       = Guid.NewGuid().ToString(),
                Type      = "b",
                Content   = req.Idea,
                ProjectId = proj.Id
            };

            _context.ProjectParameters.Add(param);
            _context.SaveChanges();

            return(Ok(new { message = "Success!" }));
        }
Example #5
0
        public async Task <IActionResult> GetIdeaForAuthor(Guid userId, Guid id)
        {
            var user = _requestBus.RequestAsync <UserRequest, UserDTO>(new UserRequest(userId));

            if (user == null)
            {
                return(BadRequest($"User {userId} not found"));
            }

            var request = new IdeaRequest(id);

            var response = await _requestBus.RequestAsync <IdeaRequest, IdeaDTO>(request);

            if (response == null)
            {
                return(BadRequest($"Idea {id} not found"));
            }

            return(Ok(response));
        }