public async Task <ActionResult> ApproveLandLordClaim(int?id)
        {
            if (!IsAdminUser())
            {
                return(RedirectToAction("Unauthorized", "LandLords"));
            }
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LandLordClaim claim = await db.LandLordClaims.FindAsync(id);

            if (claim == null || !IsAdminUser() || claim.LandLord.IsClaimed)
            {
                return(HttpNotFound());
            }
            return(View(claim));
        }
Exemple #2
0
        public async Task <ActionResult> ClaimLandLord(
            [Bind(
                 Include =
                     "Id,ClaimName,ClaimDescription,DocumentFilePath,IsPending,IsApproved,ApplicationUser_Id,LandLord_LandLordId"
                 )] ClaimLandLordViewModel vm, HttpPostedFileBase document)
        {
            if (Request.Files.Count > 0)
            {
                var file = Request.Files[0];
                vm.Document = file;
            }

            var landlordid = TempData["landlordid"];
            var landlord   = await db.LandLords.FindAsync(landlordid);

            if (landlord != null)
            {
                vm.LandLord = landlord;
            }

            //Manually changed to test all values, redirect to view if not valid. Was previously ModelState.IsValid but was broken and couldn't figure out why it wouldn't find the document.
            if (vm.Document != null && vm.ClaimName != null && vm.ClaimDescription != null && vm.LandLord != null)
            {
                ApplicationUser currentUser   = GetCurrentUser();
                var             landLordClaim = new LandLordClaim();
                var             docPath       = Path.Combine(Server.MapPath("~/uploads"), vm.Document.FileName);
                vm.Document.SaveAs(docPath);
                landLordClaim.DocumentFilePath = docPath;
                landLordClaim.ClaimName        = vm.ClaimName;
                landLordClaim.ClaimDescription = vm.ClaimDescription;
                landLordClaim.ApplicationUser  = currentUser;
                landLordClaim.LandLord         = vm.LandLord;
                db.LandLordClaims.Add(landLordClaim);
                await db.SaveChangesAsync();

                return(RedirectToAction("ClaimSubmitted"));
            }
            ViewBag.Message = "Error. Please fill out all values.";
            return(View(vm));
        }
        public async Task <ActionResult> ApproveLandLordClaimFinal(int?id)
        {
            if (!IsAdminUser())
            {
                return(RedirectToAction("Unauthorized", "LandLords"));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LandLordClaim claim = await db.LandLordClaims.FindAsync(id);

            if (claim == null || !IsAdminUser() || claim.LandLord.IsClaimed ||
                claim.ApplicationUser.ClaimedLandLordId != 0)
            {
                return(HttpNotFound());
            }
            claim.IsApproved = true;
            claim.IsPending  = false;
            var user     = claim.ApplicationUser;
            var landlord = claim.LandLord;

            user.ClaimedLandLordId   = claim.LandLord.LandLordId;
            landlord.IsClaimed       = true;
            db.Entry(landlord).State = EntityState.Modified;
            db.Entry(user).State     = EntityState.Modified;
            db.Entry(claim).State    = EntityState.Modified;
            if (db.Ratings.Any(u => u.LandLord == landlord && u.User == user))
            {
                var rating = db.Ratings.SingleOrDefault(u => u.LandLord == landlord && u.User == user);
                db.Ratings.Remove(rating);
            }
            await db.SaveChangesAsync();

            return(RedirectToAction("PendingLandLordClaims"));
        }