public HttpResponseMessage CreateFundingForProject(UserFundingModel funding, int projectId)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var identity = User.Identity as ClaimsIdentity;

            using (var s = new UserFundingRepository())
            {
                //STEP 1 - Create the Project Funding from UserFundingModel coming from the client
                long newFundingId = s.Insert(funding, projectId, identity);

                //STEP 2 - Update Project Stats Screen Amount + NoOfBackers
                using (var sr = new ProjectStatRepository())
                {
                    bool statAmountUpdated      = sr.IncrementProjectStatMoneyPledged(projectId, funding.AmountPaid);
                    bool statNoOfBackersUpdated = sr.IncrementProjectStatBackersNo(projectId);

                    if (!statAmountUpdated || !statNoOfBackersUpdated)
                    {
                        return(Request.CreateResponse(HttpStatusCode.NotFound));
                    }
                }

                return(Request.CreateResponse(HttpStatusCode.Created, newFundingId));
            }
        }
        public HttpResponseMessage GetProjectFundings(int projectId)
        {
            if (projectId <= 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            using (var s = new UserFundingRepository())
            {
                var v = s.GetProjectFundings(projectId);

                return(Request.CreateResponse(HttpStatusCode.OK, v));
            }
        }
        public HttpResponseMessage GetCurrentUserProjectFundings(int projectId)
        {
            if (projectId <= 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var identity = User.Identity as ClaimsIdentity;

            using (var s = new UserFundingRepository())
            {
                var v = s.GetCurrentUserProjectFundings(identity, projectId);

                return(Request.CreateResponse(HttpStatusCode.OK, v));
            }
        }
        public async Task <IHttpActionResult> CheckoutToViva(VivaWalletTokenModel vivaWalletModel, int fundingPackageId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            using (var s = new UserFundingRepository())
            {
                TransactionResult task = await s.ChargeAsync(vivaWalletModel.vivaWalletToken);

                if (task == null)
                {
                    return(BadRequest());
                }

                return(Ok(task));
            }
        }