public bool StatusUpdate(int backProjId, bool accept = false)
        {
            if (accept)
            {
                BackerProject backerProject = _db.BackerProjects
                                              .Include(bp => bp.Project)
                                              .Include(bp => bp.Backer)
                                              .Where(bp => bp.Id == backProjId)
                                              .FirstOrDefault();

                if (backerProject != null)
                {
                    Project project           = _db.Projects.Find(backerProject.ProjectId);
                    float   sumbackerprojects = _db.BackerProjects
                                                .Where(bp => bp.ProjectId == backerProject.ProjectId)
                                                .Where(bp => bp.Status == Status.Accepted)
                                                .Sum(bp => bp.Fund);

                    if (sumbackerprojects < project.BudgetGoal)
                    {
                        backerProject.Status           = Status.Accepted;
                        _db.Entry(backerProject).State = EntityState.Modified;
                        _db.SaveChanges();
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #2
0
        public async Task <ActionResult> VivaPayment(int amount, int projectId, int BackerId)
        {
            var transactionModel = new TransactionViewModel()
            {
                projectId   = projectId,
                transaction = await new PaymentManager().SendPaymentAsync()
            };

            if (transactionModel.transaction)
            {
                var backerProject = new BackerProject()
                {
                    Amount        = amount,
                    ProjectId     = projectId,
                    UserId        = BackerId,
                    DateInserted  = DateTime.Now,
                    PaymentStatus = "success"
                };

                db.BackerProjects.Add(backerProject);

                var project = await db.Projects.FindAsync(projectId);

                project.CurrentFundAmount += amount;
                db.Entry(project).State    = EntityState.Modified;

                await db.SaveChangesAsync();
            }
            return(View(transactionModel));
        }
Example #3
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            BackerProject backerProject = await db.BackerProjects.FindAsync(id);

            db.BackerProjects.Remove(backerProject);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Example #4
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,ProjectId,UserId,Amount,DateInserted,PaymentStatus")] BackerProject backerProject)
        {
            if (ModelState.IsValid)
            {
                db.Entry(backerProject).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Title", backerProject.ProjectId);
            ViewBag.UserId    = new SelectList(db.Users, "Id", "PhotoUrl", backerProject.UserId);
            return(View(backerProject));
        }
Example #5
0
        // GET: BackerProjects/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BackerProject backerProject = await db.BackerProjects.FindAsync(id);

            if (backerProject == null)
            {
                return(HttpNotFound());
            }
            return(View(backerProject));
        }
        public bool CancelFundingByBacker(int?backProjId)
        {
            BackerProject backProj = _db.BackerProjects.Find(backProjId);

            if (backProjId != null)
            {
                if (backProj.Status == Status.Pending)
                {
                    backProj.Status = Status.Canceled;
                    _db.SaveChanges();
                    return(true);
                }
            }
            return(false);
        }
Example #7
0
        // GET: BackerProjects/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BackerProject backerProject = await db.BackerProjects.FindAsync(id);

            if (backerProject == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ProjectId = new SelectList(db.Projects, "Id", "Title", backerProject.ProjectId);
            ViewBag.UserId    = new SelectList(db.Users, "Id", "PhotoUrl", backerProject.UserId);
            return(View(backerProject));
        }
        public BackerProject CreateFunding(BackerProjectOption backProjOption)
        {
            float tempfund  = 0;
            float finalfund = 0;
            var   reward    = _db.Rewards.Find(backProjOption.RewardId);
            var   project   = _db.Projects.Find(backProjOption.ProjectId);

            if (backProjOption.Fund == 0)
            {
                tempfund = reward.Price;
            }
            else
            {
                tempfund = backProjOption.Fund + reward.Price;
            }

            float tempTotalSum = tempfund + project.Balance;

            if (tempTotalSum < project.BudgetGoal)
            {
                finalfund = tempfund;
            }
            else
            {
                finalfund = tempfund - (tempTotalSum - project.BudgetGoal);
            }


            BackerProject backerProject = new BackerProject
            {
                BackerId  = backProjOption.BackerId,
                Backer    = _db.Backers.Find(backProjOption.BackerId),
                RewardId  = backProjOption.RewardId,
                Reward    = reward,
                ProjectId = backProjOption.ProjectId,
                Project   = project,
                Fund      = finalfund,
                DoF       = DateTime.Now,
                Status    = Status.Pending
            };

            _db.BackerProjects.Add(backerProject);
            _db.SaveChanges();
            return(backerProject);
        }
        public IActionResult StatusUpdate(int id)
        {
            BackerProject backerproject = bpMng.FindFundingById(id);

            FundingDetails funding = new FundingDetails()
            {
                Id              = backerproject.Id,
                ProjectName     = backerproject.Project.Name,
                BudgetGoal      = backerproject.Project.BudgetGoal,
                Balance         = backerproject.Project.Balance,
                BackerFirstName = backerproject.Backer.FirstName,
                BackerLastName  = backerproject.Backer.LastName,
                Fund            = backerproject.Fund,
                RewardName      = backerproject.Reward.Name,
                DoF             = backerproject.DoF
            };

            return(View(funding));
        }