public async Task <IActionResult> Edit(int id, [Bind("MIID,UnitUID,Date,Carpet,Appliances,Walls,Refundable_deposit,Nonrefundable_deposit,Pet_deposit,TenantTID")] Move_in move_in)
        {
            var mitenant = from t in _context.Tenant where t.TID == move_in.TenantTID select t;
            var miunit   = from u in _context.Unit where u.UID == move_in.UnitUID select u;
            var unit     = await _context.Unit.FindAsync(move_in.UnitUID);

            ViewData["TenantTID"] = new SelectList(mitenant, "TID", "Last_name");
            ViewData["UnitUID"]   = new SelectList(miunit, "UID", "Unit_Number");

            if (id != move_in.MIID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var tenant = await _context.Tenant.FindAsync(move_in.TenantTID);

                    if (tenant.Current.Equals("No"))
                    {
                        ViewBag.Message = "Unable to change move in date. Tenant moved out.";
                        return(View(move_in));
                    }
                    if (move_in.Date > DateTime.Today)
                    {
                        ViewBag.Message = "Unable to change move in to future date. Withdraw move in.";
                        return(View(move_in));
                    }

                    tenant.Lease_start_date = move_in.Date;

                    _context.Update(tenant);
                    _context.Update(move_in);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!Move_inExists(move_in.MIID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Details", "Buildings", new { id = unit.BuildingId }));
            }

            return(View(move_in));
        }
        public async Task <IActionResult> Create(long BuildingId, [Bind("MIID,UnitUID,Date,Carpet,Appliances,Walls,Refundable_deposit,Nonrefundable_deposit,Pet_deposit,TenantTID")] Move_in move_in)
        {
            var miunit   = from m in _context.Unit where m.UID == move_in.UnitUID select m;
            var mitenant = from t in _context.Tenant where t.TID == move_in.TenantTID select t;

            ViewData["TenantTID"] = new SelectList(mitenant, "TID", "Last_name");
            ViewData["UnitUID"]   = new SelectList(miunit, "UID", "Unit_Number");


            if (move_in.Date > DateTime.Today.AddDays(1))
            {
                ViewBag.Message = "Move in date cannot be in the future";
                return(View(move_in));
            }

            if (ModelState.IsValid)
            {
                _context.Add(move_in);

                var tenant = await _context.Tenant.FindAsync(move_in.TenantTID);

                tenant.Current          = "Yes";
                tenant.ReservedUnit     = move_in.UnitUID;
                tenant.Lease_start_date = move_in.Date;
                _context.Update(tenant);

                var unit = await _context.Unit.FindAsync(move_in.UnitUID);

                unit.Occupied      = "Yes";
                unit.Ready_to_rent = "No";

                _context.Update(unit);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Details", "Buildings", new { id = unit.BuildingId }));
            }

            return(View(move_in));
        }