public static List <ProcessFlowApproverList> GetAllApproverList(int processheaderid, int processDetailId)
 {
     try
     {
         List <ProcessFlowApproverList> approvalList = new List <ProcessFlowApproverList>();
         using (var context = new IOASDBEntities())
         {
             var query = (
                 from WF in context.tblProcessGuidelineWorkFlow
                 from U in context.tblUser
                 from S in context.tblFunctionStatus
                 where (WF.ProcessGuidelineId == processheaderid && WF.StatusId == S.FunctionStatusId && WF.ApproverId == U.UserId && WF.ProcessGuidelineDetailId == processDetailId)
                 orderby WF.ProcessGuidelineWorkFlowId
                 select new { WF.ProcessGuidelineWorkFlowId, WF.ProcessGuidelineDetailId, WF.ApproverId, U.UserName, S.Status, WF.StatusId, WF.ApproverLevel, WF.Approve_f, WF.Reject_f, WF.Clarify_f, WF.Mark_f }
                 ).ToList();
             if (query.Count > 0)
             {
                 for (int i = 0; i < query.Count; i++)
                 {
                     tblProcessGuidelineDocument objDoc = new tblProcessGuidelineDocument();
                     int pgwfid = query[i].ProcessGuidelineWorkFlowId;
                     objDoc = context.tblProcessGuidelineDocument.Where(M => M.WorkflowId == pgwfid).FirstOrDefault();
                     approvalList.Add(new ProcessFlowApproverList()
                     {
                         UserId   = Convert.ToInt32(query[i].ApproverId),
                         UserName = Convert.ToString(query[i].UserName),
                         ProcessGuidelineDetailId = Convert.ToInt32(query[i].ProcessGuidelineDetailId),
                         ApproverLevel            = Convert.ToInt32(query[i].ApproverLevel),
                         StatusId    = Convert.ToInt32(query[i].StatusId),
                         StatusName  = Convert.ToString(query[i].Status),
                         ApproveFlag = Convert.ToBoolean(query[i].Approve_f),
                         RejectFlag  = Convert.ToBoolean(query[i].Reject_f),
                         ClarifyFlag = Convert.ToBoolean(query[i].Clarify_f),
                         MarkFlag    = Convert.ToBoolean(query[i].Mark_f),
                         ProcessguidlineworkflowId = query[i].ProcessGuidelineWorkFlowId,
                         DocumentId = objDoc != null ? Convert.ToInt32(objDoc.DocumentId) : 0
                     });
                 }
             }
         }
         return(approvalList);
     }
     catch (Exception ex)
     {
         return(new List <ProcessFlowApproverList>());
     }
 }
 public static int AddApproverDetails(ProcessFlowApproverList model)
 {
     try
     {
         using (var context = new IOASDBEntities())
         {
             int rowsAffected = 0, pglWorkflowId = 0;
             if (model.ProcessguidlineworkflowId == 0)
             {
                 tblProcessGuidelineWorkFlow objIU = new tblProcessGuidelineWorkFlow();
                 objIU.ProcessGuidelineId       = model.processguidlineId;
                 objIU.ProcessGuidelineDetailId = model.ProcessGuidelineDetailId;
                 objIU.StatusId      = model.StatusId;
                 objIU.ApproverId    = model.UserId;
                 objIU.ApproverLevel = model.ApproverLevel;
                 objIU.Approve_f     = model.ApproveFlag;
                 objIU.Reject_f      = model.RejectFlag;
                 objIU.Clarify_f     = model.ClarifyFlag;
                 objIU.Mark_f        = model.MarkFlag;
                 context.tblProcessGuidelineWorkFlow.Add(objIU);
                 rowsAffected  = context.SaveChanges();
                 pglWorkflowId = objIU.ProcessGuidelineWorkFlowId;
             }
             else
             {
                 tblProcessGuidelineWorkFlow objupdate = new tblProcessGuidelineWorkFlow();
                 objupdate = context.tblProcessGuidelineWorkFlow.Where(M => M.ProcessGuidelineWorkFlowId == model.ProcessguidlineworkflowId).FirstOrDefault();
                 if (objupdate != null)
                 {
                     objupdate.ProcessGuidelineId       = model.processguidlineId;
                     objupdate.ProcessGuidelineDetailId = model.ProcessGuidelineDetailId;
                     objupdate.StatusId      = model.StatusId;
                     objupdate.ApproverId    = model.UserId;
                     objupdate.ApproverLevel = model.ApproverLevel;
                     objupdate.Approve_f     = model.ApproveFlag;
                     objupdate.Reject_f      = model.RejectFlag;
                     objupdate.Clarify_f     = model.ClarifyFlag;
                     objupdate.Mark_f        = model.MarkFlag;
                     rowsAffected            = context.SaveChanges();
                     pglWorkflowId           = objupdate.ProcessGuidelineWorkFlowId;
                 }
             }
             //Document insertion
             if ((model.ProcessguidlineworkflowId == 0 && rowsAffected > 0) || model.ProcessguidlineworkflowId > 0)
             {
                 //Remove existing document
                 tblProcessGuidelineDocument objDocDelete;
                 objDocDelete = context.tblProcessGuidelineDocument.Where(s => s.WorkflowId == pglWorkflowId).FirstOrDefault();
                 if (objDocDelete != null)
                 {
                     context.Entry(objDocDelete).State = System.Data.Entity.EntityState.Deleted;
                     context.SaveChanges();
                 }
                 //Insert new document
                 tblProcessGuidelineDocument objDoc = new tblProcessGuidelineDocument();
                 objDoc.DocumentId = model.DocumentId;
                 objDoc.WorkflowId = pglWorkflowId;
                 context.tblProcessGuidelineDocument.Add(objDoc);
                 context.SaveChanges();
             }
             return(pglWorkflowId);
         }
     }
     catch (Exception ex)
     {
         return(-1);
     }
 }