public HttpResponseMessage AuthenicateUser([FromUri] string route)
 {
     var transaction = new TransactionInformationDTO();
     transaction.IsAuthenticated = User.Identity.IsAuthenticated;
     var response = Request.CreateResponse(HttpStatusCode.OK, transaction);
     return response;
 }
 public HttpResponseMessage Logout()
 {
     var transaction = new TransactionInformationDTO();
     //var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, " ") { Expires = DateTime.Now.AddDays(-1) };
     //HttpContext.Current.Response.Cookies.Add(cookie);
     FormsAuthentication.SignOut();
     transaction.IsAuthenticated = false;
     var response = Request.CreateResponse(HttpStatusCode.OK, transaction);
     return response;
 }
        public IHttpActionResult GetMenuItems()
        {
            var transaction = new TransactionInformationDTO();
            if(User.Identity.IsAuthenticated)
            {
                transaction.IsAuthenticated = true;
            }

            transaction.ReturnMessage.Add(Utilities.ViewRenderer<HomeController>("_MenuPartial", null));

            return Ok(transaction);
        }
        public async Task<IHttpActionResult> Login([FromBody] LoginViewModel loginUserDto)
        {
            var user = Mapper.Map<User>(loginUserDto);
            var transaction = new TransactionInformationDTO();
            await this._userBusinessService.Login(user, transaction);

            if (transaction.ReturnStatus == false)
            {
                return Content(HttpStatusCode.BadRequest, transaction);
            }

            FormsAuthentication.SetAuthCookie(user.UserId.ToString(), false);
            //SetCookie(user);
            transaction.IsAuthenticated = true;
            return Ok(transaction);
        }
        public async Task<IHttpActionResult> RegisterUser([FromBody] RegisterViewModel registerUserDTO)
        {
            var user = Mapper.Map<User>(registerUserDTO);
            var transaction = new TransactionInformationDTO();
            await this._userBusinessService.RegisterUser(user, registerUserDTO.PasswordConfirmation, transaction);

            if (transaction.ReturnStatus == false)
            {
                return Content(HttpStatusCode.BadRequest, transaction);
            }

            FormsAuthentication.SetAuthCookie(user.UserId.ToString(), false);
            //SetCookie(user);
            transaction.IsAuthenticated = true;
            return Ok(transaction);
        }
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            HttpContext ctx = default(HttpContext);
            ctx = HttpContext.Current;

            var request = actionContext.Request;
            if (!actionContext.ModelState.IsValid)
            {
                var transactionInformation = new TransactionInformationDTO();

                transactionInformation.ReturnMessage = ModelStateHelper.ReturnErrorMessages(actionContext.ModelState.Values);
                transactionInformation.ValidationErrors = ModelStateHelper.ReturnValidationErrors(actionContext.ModelState);
                transactionInformation.ReturnStatus = false;
                transactionInformation.IsAuthenticated = ctx.User.Identity.IsAuthenticated;
                actionContext.Response = request.CreateResponse(HttpStatusCode.BadRequest, transactionInformation);
            }
        }
        public IHttpActionResult InitializeApplication()
        {
            //ApplicationApiModel applicationWebApiModel = new ApplicationApiModel();
            //TransactionInformationDTO transaction = new TransactionInformationDTO();
            //ApplicationInitializationBusinessService initializationBusinessService;

            //initializationBusinessService = new ApplicationInitializationBusinessService(applicationDataService);
            //initializationBusinessService.InitializeApplication(out transaction);

            //if (transaction.ReturnStatus == false)
            //{
            //    applicationWebApiModel.ReturnMessage = transaction.ReturnMessage;
            //    applicationWebApiModel.ReturnStatus = transaction.ReturnStatus;
            //    var badResponse = Request.CreateResponse<ApplicationApiModel>(HttpStatusCode.BadRequest, applicationWebApiModel);
            //    return badResponse;
            //}

            //initializationBusinessService = new ApplicationInitializationBusinessService(applicationDataService);
            //List<ApplicationMenu> menuItems = initializationBusinessService.GetMenuItems(User.Identity.IsAuthenticated, out transaction);

            //if (transaction.ReturnStatus == false)
            //{
            //    applicationWebApiModel.ReturnMessage = transaction.ReturnMessage;
            //    applicationWebApiModel.ReturnStatus = transaction.ReturnStatus;
            //    var badResponse = Request.CreateResponse<ApplicationApiModel>(HttpStatusCode.BadRequest, applicationWebApiModel);
            //    return badResponse;
            //}

            //applicationWebApiModel.ReturnMessage.Add("Application has been initialized.");
            //applicationWebApiModel.ReturnStatus = transaction.ReturnStatus;
            //applicationWebApiModel.MenuItems = menuItems;
            //applicationWebApiModel.IsAuthenicated = User.Identity.IsAuthenticated;

            //var response = Request.CreateResponse<ApplicationApiModel>(HttpStatusCode.OK, applicationWebApiModel);
            //return response;
            var transaction = new TransactionInformationDTO();
            if(User.Identity.IsAuthenticated)
            {
                transaction.IsAuthenticated = true;
            }

            return Ok(transaction);
        }
        public IHttpActionResult IsUserAuthenicated()
        {
            var transaction = new TransactionInformationDTO();
            if (User.Identity.IsAuthenticated)
            {
                transaction.IsAuthenticated = true;
            }

            return Ok(transaction);
        }