Search code examples
asp.netasp.net-mvcasp.net-mvc-4

Updating records on different tables ASP.NET MVC


In my application from the view someone pressed the Approve button, controller will collect the Main Id of the request. Here I want to update 3rd table Approval_Status column to true. I passed the main Id and got the 3rd table Id which I want to update record to the variable.

int PartyId = db.ApprovalProcess.Where(x => x.Req_Id == id).ToList().First().Id;

and then I wrote this code to pass the value. But it wont work. Can I get a help for this (question will seems like easy to you, but i want to tell you that I'm self learning ASP.NET MVC these days. So some stuff still I couldn't get)

Here is my database structure. Main table name is AppRequest, 2nd table is ApprovalProcess and the 3rd one is Approval_Parties.

enter image description here

This is my current code:

public ActionResult ApproveRequest(int? id)
{
     int PartyId = db.ApprovalProcess.Where(x => x.Req_Id == id).ToList().First().Id;
     
     if (ModelState.IsValid)
     {
         // model.Approved_Date = DateTime.Now;
               
         ApprovalParty approvalParty = new ApprovalParty();
         approvalParty.Approve_Status = true;

         db.SaveChanges();

         return RedirectToAction("Index");
     }
}

I think I'm missing the code that which record should update in the table that already assigned that Id to the PartyId.


Solution

  • Something like this would work:

    public ActionResult ApproveRequest(int? id)
    {
        ApprovalProcess approvalProcess = db.ApprovalProcess.FirsOrDefault(x => x.Req_Id == id);
    
        if (approvalProcess != null) 
        {
            ApprovalParty approvalParty = db.Approval_Parties.FirsOrDefault(x => x.ApprovalProcess_Id == approvalProcess.Id);
         
            if (approvalParty != null)
            {
                approvalParty.Approve_Status = true;
                approvalParty.Approved_Date = DateTime.Now;
    
                db.SaveChanges();
                
                return RedirectToAction("Index");
            }
        }
    }