예제 #1
0
        public async Task <IActionResult> ChangeTicket([FromBody] TicketChangeInput input = null)
        {
            // Check that every input is there
            if (input == null)
            {
                return(BadRequest(new GeneralMessage()
                {
                    Message = "Missing input data"
                }));
            }

            Category cat = null;

            if (!string.IsNullOrEmpty(input.System) && !string.IsNullOrWhiteSpace(input.System) && !string.IsNullOrEmpty(input.CategoryName) && !string.IsNullOrWhiteSpace(input.CategoryName))
            {
                var sys = await _dbHandler.GetSystemAsync(input.System);

                if (sys == null)
                {
                    return(BadRequest(new GeneralMessage()
                    {
                        Message = "Invalid system is defined"
                    }));
                }

                cat = await _dbHandler.GetCategoryAsync(input.CategoryName, sys);

                if (cat == null)
                {
                    return(BadRequest(new GeneralMessage()
                    {
                        Message = "Invalid category is defined"
                    }));
                }
            }

            input.Category = cat;

            // Get user who wants remove user
            var re          = Request;
            var headers     = re.Headers;
            var tokenString = headers["Authorization"];

            var handler = new JwtSecurityTokenHandler();
            var token   = handler.ReadJwtToken(tokenString[0].Split(' ')[1]);

            var claims        = token.Claims;
            var usernameClaim = claims.Where(x => x.Type == ClaimTypes.Name).FirstOrDefault();
            var user          = await _dbHandler.GetUserAsync(usernameClaim.Value);

            input.ChangederUser = user;

            if (input.CategoryName == null)
            {
                input.Category = null;
            }
            if (input.Refernce == null)
            {
                input.Refernce = "";
            }
            if (input.System == null)
            {
                input.System = "";
            }
            if (input.Title == null)
            {
                input.Title = "";
            }

            var respond = await _dbHandler.ChangeTicketAsync(input);

            if (respond.MessageType == MessageType.NOK)
            {
                return(BadRequest(new GeneralMessage()
                {
                    Message = respond.MessageText
                }));
            }

            return(Ok(new GeneralMessage()
            {
                Message = respond.MessageText
            }));
        }