Пример #1
0
        /// <summary>
        /// Function used for Worklist Based on the search condition
        /// </summary>
        /// <param name="ReferID">ReferenceID (Optional)</param>
        /// <param name="CStat">Status (Optional)</param>
        /// <param name="FDate">FromDate (Optional)</param>
        /// <param name="TDate">ToDate (Optional)</param>
        /// <param name="Appl">Applicant Name (Optional)</param>
        /// <param name="UserId">UserId for checking authentication</param>
        /// <param name="Type">Task Owner</param>
        ///  SP  : K2_WorkList
        /// <returns></returns>
        /// <summary>
        public List <ChkFrmStatus> GetWorklist(string ReferID, string CStat, string FDate, string TDate, string UserId, string SUser, string ProsIncId, int offset = 0, int limit = 999999, string sort = null, string applicant = null, string applicantEmpNo = null)
        {
            string              proinsid   = "";
            WorkflowFacade      workfacade = new WorkflowFacade();
            List <WorklistItem> worklist   = new List <WorklistItem>();

            if (string.IsNullOrEmpty(SUser))
            {
                worklist = workfacade.GetWorklistItemForAllTasks(UserId);
                //if (worklist.Count() > 0)
                //{
                //    proinsid = String.Join(",", worklist.Select(P => P.ProcInstID)).TrimEnd(',');
                //}
            }
            else
            {
                List <WorklistItem> sharedworklist = workfacade.GetWorklistItemForAllTasks(SUser);
                var sharePermit = (from a in Db.SharingList
                                   join b in Db.DelegationProcess on a.ActivityGroupID equals b.GroupID into ps
                                   from b in ps.DefaultIfEmpty()
                                   where a.DelegationType == "Sharing" &&
                                   a.FromWorkerID == SUser &&
                                   a.ToWorkerID == UserId
                                   select b.K2StepName
                                   ).ToList();
                foreach (var i in sharedworklist)
                {
                    if (sharePermit.Contains(i.ActivityName))
                    {
                        worklist.Add(i);
                    }
                }
            }

            List <CheckStatus>  StatusList   = new List <CheckStatus>();
            List <ChkFrmStatus> FormRequests = new List <ChkFrmStatus>();

            if (worklist.Count() > 0)
            {
                try
                {
                    SqlParameter[] sqlp =
                    {
                        new SqlParameter("ReferID",        DBNull.Value),
                        new SqlParameter("CStatus",        DBNull.Value),
                        new SqlParameter("FDate",          DBNull.Value),
                        new SqlParameter("TDate",          DBNull.Value),
                        new SqlParameter("SUser",          DBNull.Value),
                        new SqlParameter("userid",         DBNull.Value),
                        new SqlParameter("TOwner",         DBNull.Value),
                        new SqlParameter("ProcIncId",      DBNull.Value),
                        new SqlParameter("offset",         offset),
                        new SqlParameter("limit",          limit),
                        new SqlParameter("sort",           sort),
                        new SqlParameter("applicant",      DBNull.Value),
                        new SqlParameter("applicantEmpNo", DBNull.Value)
                    };

                    if (!string.IsNullOrEmpty(ReferID))
                    {
                        sqlp[0].Value = ReferID;
                    }
                    if (!string.IsNullOrEmpty(CStat))
                    {
                        sqlp[1].Value = CStat;
                    }
                    if (!string.IsNullOrEmpty(FDate))
                    {
                        sqlp[2].Value = FDate;
                    }
                    if (!string.IsNullOrEmpty(TDate))
                    {
                        sqlp[3].Value = TDate;
                    }
                    if (!string.IsNullOrEmpty(SUser))
                    {
                        sqlp[4].Value = SUser;
                    }
                    if (!string.IsNullOrEmpty(UserId))
                    {
                        sqlp[5].Value = UserId;
                    }
                    if (!string.IsNullOrEmpty(applicant))
                    {
                        sqlp[11].Value = applicant;
                    }
                    if (!string.IsNullOrEmpty(applicantEmpNo))
                    {
                        sqlp[12].Value = applicantEmpNo;
                    }

                    if (string.IsNullOrEmpty(ProsIncId))
                    {
                        if (worklist.Count > 0)
                        {
                            sqlp[7].Value = String.Join(",", worklist.Select(P => P.ProcInstID)).TrimEnd(',');
                        }
                    }
                    else
                    {
                        sqlp[7].Value = ProsIncId;
                    }

                    StatusList = Db.Database.SqlQuery <CheckStatus>("exec [K2_WorkList] @ReferID,@CStatus,@FDate,@TDate,@SUser,@UserId,@TOwner,@ProcIncId,@offset,@limit,@sort,@applicant,@applicantEmpNo", sqlp).ToList();

                    //foreach (int FormID in StatusList.Select(P => P.FormID).Distinct())
                    foreach (var request in StatusList.DistinctBy(P => P.ProcInstID))
                    {
                        ChkFrmStatus status = new ChkFrmStatus();
                        //var request = StatusList.Where(P => P.FormID == FormID).FirstOrDefault();
                        if (!string.IsNullOrEmpty(request.ProcInstID))
                        {
                            int procid = 0;
                            procid = Convert.ToInt32(request.ProcInstID);
                            //if (worklist.Select(P => P.ProcInstID).Contains(procid))
                            //{
                            status.FormID              = request.FormID;
                            status.ProcInstID          = request.ProcInstID;
                            status.ReferenceID         = request.ReferenceID;
                            status.FormStatus          = request.FormStatus;
                            status.SubmittedOn         = request.SubmittedOn;
                            status.ApplicantUserId     = request.ApplicantUserID;
                            status.ApplicantEMP        = request.ApplicantEMP;
                            status.ApplicantFNAME      = request.ApplicantFNAME;
                            status.ApproverEmp         = request.ApproverEMP;
                            status.ApproverFNAME       = request.ApproverFNAME;
                            status.ProcInstID          = request.ProcInstID;
                            status.DisplayStatus       = request.DisplayStatus;
                            status.LastUser            = request.LastUser;
                            status.ActionTakerFullName = request.ActionTakerFullName;
                            status.ITSApproverFullName = request.ITSApproverFullName;
                            status.PreparerFNAME       = request.PreparerFullName;
                            status.CurrentActor        = request.CurrentActor;
                            status.SUser = request.SUser;

                            //if (!string.IsNullOrEmpty(request.ProcInstID))
                            //{

                            //if (!proinsid.Split(',').Contains(request.ProcInstID))
                            //{
                            //    status.ProcessUrl = worklist.Where(p => p.ProcInstID == procid).Select(P => P.Data).FirstOrDefault() + "&SharedBy=" + SUser;
                            //    status.Type = "Sharing";
                            //}
                            //else
                            //    status.ProcessUrl = worklist.Where(p => p.ProcInstID == procid).Select(P => P.Data).FirstOrDefault();

                            if (!string.IsNullOrEmpty(SUser))
                            {
                                status.Type = "Sharing";
                            }


                            //}
                            //status.ProcessUrl = worklist.Where(p => p.ProcInstID == procid).Select(P => P.Data).FirstOrDefault();
                            status.SN = worklist.Where(p => p.ProcInstID == procid).Select(P => P.SN).FirstOrDefault();
                            //var actions = worklist.Where(p => p.ProcInstID == procid).Select(P => P.Actions).FirstOrDefault();
                            //if (actions != null)
                            //    status.actions = actions.Select(P => P.Name).ToList();

                            if (request.Permission != "2")
                            {
                                List <ServiceLevel1> Level1lst = new List <ServiceLevel1>();
                                foreach (var FirstLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID).Select(P => new { P.MMenu, P.MMenuGUID }).Distinct())
                                {
                                    if (!string.IsNullOrEmpty(FirstLevelService.MMenu))
                                    {
                                        ServiceLevel1 Level1 = new ServiceLevel1();
                                        Level1.Name = FirstLevelService.MMenu;
                                        Level1.GUID = new Guid(FirstLevelService.MMenuGUID);
                                        List <ServiceLevel2> Level2lst = new List <ServiceLevel2>();
                                        foreach (var SecondLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu).DistinctBy(P => P.SubMenu))
                                        {
                                            ServiceLevel2 Level2 = new ServiceLevel2();
                                            Level2.Name   = SecondLevelService.SubMenu;
                                            Level2.GUID   = new Guid(SecondLevelService.SubMenuGUID);
                                            Level2.SValue = SecondLevelService.ServiceTypeValue;
                                            List <ServiceLevel3> Level3lst = new List <ServiceLevel3>();
                                            foreach (var ThirsLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu && P.SubMenu == SecondLevelService.SubMenu).OrderBy(P => P.ServiceGUID))
                                            {
                                                ServiceLevel3 Level3 = new ServiceLevel3();
                                                Level3.Name        = ThirsLevelService.SSubMenu;
                                                Level3.GUID        = new Guid(ThirsLevelService.SSubMenuGUID);
                                                Level3.SValue      = ThirsLevelService.ServiceTypeValue;
                                                Level3.ControlFlag = ThirsLevelService.ControlFlag;
                                                Level3lst.Add(Level3);
                                            }
                                            if (Level3lst.Count > 0)
                                            {
                                                Level2.Level3 = Level3lst;
                                                //Level2.GUID = Guid.Empty;   // To return Null Value.
                                                Level2.SValue = null;
                                            }
                                            else
                                            {
                                                Level2.Level3 = null;
                                            }
                                            Level2lst.Add(Level2);
                                        }
                                        if (Level2lst.Count > 0)
                                        {
                                            Level1.Level2 = Level2lst;
                                        }
                                        else
                                        {
                                            Level1.Level2 = null;
                                        }
                                        Level1lst.Add(Level1);
                                    }
                                }
                                if (Level1lst.Count > 0)
                                {
                                    status.RequestList = Level1lst;
                                }
                                else
                                {
                                    status.RequestList = null;
                                }
                            }
                            FormRequests.Add(status);
                            //}
                        }
                    }
                }
                catch (Exception ex)
                {
                    FormRequests = null;
                    throw ex;
                }
            }
            return(FormRequests);
        }
Пример #2
0
        /// <summary>
        /// Function used for check status & DraftList Based on the search condition
        /// </summary>
        /// <param name="ReferID">ReferenceID (Optional)</param>
        /// <param name="CStat">Status (Optional)</param>
        /// <param name="FDate">FromDate (Optional)</param>
        /// <param name="TDate">ToDate (Optional)</param>
        /// <param name="Appl">Applicant Name (Optional)</param>
        /// <param name="UserId">UserId for checking authentication</param>
        /// <param name="Type">Review or DraftEdit</param>
        ///  SP  : K2_CheckStatus
        /// <returns></returns>
        /// <summary>
        public List <ChkFrmStatus> GetRequestList(string ReferID, string CStat, string FDate, string TDate, string Appl, string UserId, string Type, string ApplicantEmployeeId, int offset = 0, int limit = 999999, string sort = null)
        {
            List <CheckStatus>  StatusList   = new List <CheckStatus>();
            List <ChkFrmStatus> FormRequests = new List <ChkFrmStatus>();

            try
            {
                SqlParameter[] sqlp =
                {
                    new SqlParameter("ReferID",             DBNull.Value),
                    new SqlParameter("CStatus",             DBNull.Value),
                    new SqlParameter("FDate",               DBNull.Value),
                    new SqlParameter("TDate",               DBNull.Value),
                    new SqlParameter("Applicant",           DBNull.Value),
                    new SqlParameter("UserId",              UserId),
                    new SqlParameter("Type",                Type),
                    new SqlParameter("offset",              offset),
                    new SqlParameter("limit",               limit),
                    new SqlParameter("sort",                sort),
                    new SqlParameter("ApplicantEmployeeId", DBNull.Value)
                };
                if (!string.IsNullOrEmpty(ReferID))
                {
                    sqlp[0].Value = ReferID;
                }
                if (!string.IsNullOrEmpty(CStat))
                {
                    sqlp[1].Value = CStat;
                }
                if (!string.IsNullOrEmpty(FDate))
                {
                    sqlp[2].Value = FDate;
                }
                if (!string.IsNullOrEmpty(TDate))
                {
                    sqlp[3].Value = TDate;
                }
                if (!string.IsNullOrEmpty(Appl))
                {
                    sqlp[4].Value = Appl;
                }
                if (!string.IsNullOrEmpty(ApplicantEmployeeId))
                {
                    sqlp[10].Value = ApplicantEmployeeId;
                }
                StatusList = Db.Database.SqlQuery <CheckStatus>("exec [K2_CheckStatus_new] @ReferID,@CStatus,@FDate,@TDate,@Applicant,@UserId,@Type,@offset,@limit,@sort,@ApplicantEmployeeId", sqlp).ToList();

                foreach (var request in StatusList.DistinctBy(p => new { p.ProcInstID, p.FormID }))
                {
                    ChkFrmStatus status = new ChkFrmStatus();
                    //var request = StatusList.Where(P => P.FormID == FormID).FirstOrDefault();
                    status.FormID          = request.FormID;
                    status.ProcInstID      = request.ProcInstID;
                    status.ReferenceID     = request.ReferenceID;
                    status.FormStatus      = request.FormStatus;
                    status.SubmittedOn     = request.SubmittedOn;
                    status.ApplicantUserId = request.ApplicantUserID;
                    status.ApplicantEMP    = request.ApplicantEMP;
                    status.ApplicantFNAME  = request.ApplicantFNAME;
                    status.ApproverEmp     = request.ApproverEMP;
                    status.ApproverFNAME   = request.ApproverFNAME;
                    status.DisplayStatus   = request.DisplayStatus;
                    status.LastUser        = request.LastUser;
                    status.PreparerFNAME   = request.PreparerFullName;

                    status.ActionTakerFullName = request.ActionTakerFullName;
                    //status.ActionTakerStatus = request.ActionTakerStatus;
                    status.ITSApproverFullName = request.ITSApproverFullName;
                    //status.ITSApproverStatus = request.ITSApproverStatus;

                    status.CurrentActor = request.CurrentActor;

                    List <ServiceLevel1> Level1lst = new List <ServiceLevel1>();
                    //foreach (string FirstLevelService in StatusList.Where(P => P.FormID == FormID).Select(P => P.MMenu).Distinct())
                    foreach (var FirstLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID).Select(P => new { P.MMenu, P.MMenuGUID }).Distinct())
                    {
                        if (!string.IsNullOrEmpty(FirstLevelService.MMenu))
                        {
                            ServiceLevel1 Level1 = new ServiceLevel1();
                            Level1.Name = FirstLevelService.MMenu;
                            Level1.GUID = new Guid(FirstLevelService.MMenuGUID);
                            List <ServiceLevel2> Level2lst = new List <ServiceLevel2>();
                            foreach (var SecondLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu).DistinctBy(P => P.SubMenu))
                            {
                                ServiceLevel2 Level2 = new ServiceLevel2();
                                Level2.Name   = SecondLevelService.SubMenu;
                                Level2.GUID   = new Guid(SecondLevelService.SubMenuGUID);
                                Level2.SValue = SecondLevelService.ServiceTypeValue;
                                List <ServiceLevel3> Level3lst = new List <ServiceLevel3>();
                                foreach (var ThirsLevelService in StatusList.Where(P => P.FormID == request.FormID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu && P.SubMenu == SecondLevelService.SubMenu).OrderBy(P => P.ServiceGUID))
                                {
                                    ServiceLevel3 Level3 = new ServiceLevel3();
                                    Level3.Name        = ThirsLevelService.SSubMenu;
                                    Level3.GUID        = new Guid(ThirsLevelService.SSubMenuGUID);
                                    Level3.SValue      = ThirsLevelService.ServiceTypeValue;
                                    Level3.ControlFlag = ThirsLevelService.ControlFlag;
                                    Level3lst.Add(Level3);
                                }
                                if (Level3lst.Count > 0)
                                {
                                    Level2.Level3 = Level3lst;
                                    //Level2.GUID = Guid.Empty;   // To return Null Value.
                                    Level2.SValue = null;
                                }
                                else
                                {
                                    Level2.Level3 = null;
                                }
                                Level2lst.Add(Level2);
                            }
                            if (Level2lst.Count > 0)
                            {
                                Level1.Level2 = Level2lst;
                            }
                            else
                            {
                                Level1.Level2 = null;
                            }
                            Level1lst.Add(Level1);
                        }
                    }
                    if (Level1lst.Count > 0)
                    {
                        status.RequestList = Level1lst;
                    }
                    else
                    {
                        status.RequestList = null;
                    }
                    FormRequests.Add(status);
                }
            }
            catch (Exception ex)
            {
                FormRequests = null;
                throw ex;
            }
            return(FormRequests);
        }
Пример #3
0
        /// <summary>
        /// Used to return all three level of services
        /// Table  : ServiceType
        /// get the data from Table and bind the value to ServiceType list
        /// </summary>
        /// <returns>Return list : ServiceLevel1</returns>
        public List <ServiceLevel1> GetAllServiceTypes()
        {
            List <ServiceLevel1> ServiceList  = new List <ServiceLevel1>();
            List <ServiceType>   ServiceTypes = new List <ServiceType>();

            try
            {
                ServiceTypes = Db.ServiceTypes.ToList();
                foreach (var FirstlevelOption in ServiceTypes.Where(P => P.ServiceTypeLevel == "1").OrderBy(P => P.DisplayOrder))  // to filter the 1st level services
                {
                    if (FirstlevelOption != null)
                    {
                        ServiceLevel1 Level1 = new ServiceLevel1();
                        Level1.Name = FirstlevelOption.ServiceTypeName;
                        Level1.GUID = FirstlevelOption.ServiceTypeGUID;
                        List <ServiceLevel2> Level2List = new List <ServiceLevel2>();
                        foreach (var SecondLevelOption in ServiceTypes.Where(P => P.ParentServiceTypeGUID == FirstlevelOption.ServiceTypeGUID.ToString()).OrderBy(P => P.DisplayOrder)) // to filter the 2nd Level Services
                        {
                            if (SecondLevelOption != null)
                            {
                                ServiceLevel2 Level2 = new ServiceLevel2();
                                Level2.Name = SecondLevelOption.ServiceTypeName;
                                Level2.GUID = SecondLevelOption.ServiceTypeGUID;
                                List <ServiceLevel3> Level3List = new List <ServiceLevel3>();
                                foreach (var ThirdLevelOption in ServiceTypes.Where(P => P.ParentServiceTypeGUID == SecondLevelOption.ServiceTypeGUID.ToString()).OrderBy(P => P.DisplayOrder)) // to filter the 3rd Level Services
                                {
                                    if (ThirdLevelOption != null)
                                    {
                                        ServiceLevel3 Level3 = new ServiceLevel3();
                                        Level3.Name        = ThirdLevelOption.ServiceTypeName;
                                        Level3.GUID        = ThirdLevelOption.ServiceTypeGUID;
                                        Level3.Approver    = ThirdLevelOption.ApproverRuleCode;
                                        Level3.ActionTaker = ThirdLevelOption.ActionTakerRuleCode;
                                        Level3.Enabled     = ThirdLevelOption.Enabled;
                                        Level3.ControlFlag = ThirdLevelOption.ControlFlag;
                                        Level3.Placeholder = ThirdLevelOption.Placeholder;
                                        Level3List.Add(Level3);
                                    }
                                }
                                if (Level3List.Count > 0)
                                {
                                    Level2.Level3 = Level3List;
                                }
                                else
                                {
                                    Level2.Level3 = null;
                                }
                                Level2List.Add(Level2);
                            }
                        }
                        if (Level2List.Count > 0)
                        {
                            Level1.Level2 = Level2List;
                        }
                        else
                        {
                            Level1.Level2 = null;
                        }
                        ServiceList.Add(Level1);
                    }
                }
            }
            catch (Exception ex)
            {
                ServiceList = null;
                throw ex;
            }
            return(ServiceList);
        }
Пример #4
0
        /// <summary>
        /// Function used for Edit & review page for the single Request
        /// </summary>
        /// <param name="ReferID">ReferenceID</param>
        /// <param name="UserId">UserId for checking authentication</param>
        /// <param name="Type">Review or DraftEdit</param>
        /// SP  : K2_Review , K2_ReviewCC
        /// <returns></returns>
        public List <Review> GetRequestDetails(string ReferID, string UserId, string ProInstID, string Type)
        {
            List <RequestReview> MList        = new List <RequestReview>();
            List <CC>            CClist       = new List <CC>();
            List <Review>        FormRequests = new List <Review>();

            try
            {
                SqlParameter[] sqlp =
                {
                    new SqlParameter("ReferID",   ReferID),
                    new SqlParameter("UserId",    UserId),
                    new SqlParameter("Type",      Type),
                    new SqlParameter("ProInstID", DBNull.Value)
                };
                if (!string.IsNullOrEmpty(ProInstID))
                {
                    sqlp[3].Value = ProInstID;
                }
                MList = Db.Database.SqlQuery <RequestReview>("exec [K2_Review_new] @ReferID,@UserId,@Type,@ProInstID", sqlp).ToList();
                SqlParameter[] sqlp1 =
                {
                    new SqlParameter("ReferID", ReferID),
                    new SqlParameter("UserId",  UserId),
                    new SqlParameter("Type",    Type)
                };
                CClist = Db.Database.SqlQuery <CC>("exec [K2_ReviewCC] @ReferID,@UserId,@Type", sqlp1).ToList();

                if (MList != null)
                {
                    foreach (int FormGUID in MList.Select(P => P.FormID).Distinct())
                    {
                        Review Rev     = new Review();
                        var    request = MList.Where(P => P.FormID == FormGUID).FirstOrDefault();
                        Rev.FormID              = FormGUID;
                        Rev.ProcInstID          = request.ProcInstID;
                        Rev.ReferenceID         = request.ReferenceID;
                        Rev.FormStatus          = request.FormStatus;
                        Rev.CreatedOn           = request.CreatedOn;
                        Rev.PreparerEMP         = request.PreparerEMP;
                        Rev.PreparerUserID      = request.PreparerUserID;
                        Rev.PreparerFNAME       = request.PreparerFNAME;
                        Rev.ApplicantEMP        = request.ApplicantEMP;
                        Rev.ApplicantUserID     = request.ApplicantUserID;
                        Rev.ApplicantFNAME      = request.ApplicantFNAME;
                        Rev.DEPT                = request.DEPT;
                        Rev.Title               = request.Title;
                        Rev.Location            = request.Location;
                        Rev.ApproverEmp         = request.ApproverEMP;
                        Rev.ApproverUserID      = request.ApproverUserID;
                        Rev.ApproverFNAME       = request.ApproverFNAME;
                        Rev.Justification       = request.Justification;
                        Rev.EDeliveryDate       = request.EDeliveryDate;
                        Rev.DurationOfUse       = request.DurationOfUse;
                        Rev.EstimatedCost       = request.EstimatedCost;
                        Rev.BudgetProvided      = request.BudgetProvided;
                        Rev.BudgetSum           = request.BudgetSum;
                        Rev.Remark              = request.Remark;
                        Rev.ActionTakerUserID   = request.ActionTakerUserID;
                        Rev.ActionTakerFullName = request.ActionTakerFullName;
                        //Rev.ActionTakerStatus = request.ActionTakerStatus;
                        Rev.ITSApproverUserID   = request.ITSApproverUserID;
                        Rev.ITSApproverFullName = request.ITSApproverFullName;
                        //Rev.ITSApproverStatus = request.ITSApproverStatus;
                        //Rev.Status = request.Status;
                        Rev.DisplayStatus          = request.DisplayStatus;
                        Rev.ActionTakerServiceType = request.ActionTakerServiceType;
                        List <Employee> CC1 = new List <Employee>();
                        foreach (string mm in CClist.Where(k => k.Type == "CC").Select(k => k.UID).Distinct())
                        {
                            CC1.Add(new Employee {
                                USERID = mm, FULLNAME = CClist.Where(k => k.Type == "CC" && k.UID == mm).Select(k => k.UName).FirstOrDefault()
                            });
                        }
                        if (CC1.Count > 0)
                        {
                            Rev.RequestCC = CC1;
                        }
                        else
                        {
                            Rev.RequestCC = null;
                        }
                        AttachFile    Attach    = new AttachFile();
                        List <string> FileNames = new List <string>();
                        FileNames = CClist.Where(k => k.Type == "Attachment").Select(k => k.UID).Distinct().ToList();
                        if (FileNames.Count > 0)
                        {
                            Attach.FileName = FileNames;
                        }
                        else
                        {
                            Attach.FileName = null;
                        }
                        Rev.Attachment = Attach;
                        Rev.ProcessLog = Db.ProcessLogs.Where(P => P.FormID == Rev.FormID && (P.ProcInstID.ToString() == Rev.ProcInstID || P.ProcInstID.ToString() == ProInstID) && P.ActionResult != "Forwarded").ToList();
                        foreach (var plog in Rev.ProcessLog)
                        {
                            //ProcessActionList pa = Db.ProcessActionLists.Where(P => P.K2ActionName == plog.ActionResult).FirstOrDefault();
                            var pa = (from a in Db.ProcessStepLists
                                      join b in Db.ProcessActionLists on a.StepID equals b.StepID into ps
                                      from b in ps.DefaultIfEmpty()
                                      where a.K2StepName == plog.ActivityName && b.K2ActionName == plog.ActionResult
                                      select b.ActionDisplayName
                                      ).FirstOrDefault();
                            if (pa != null)
                            {
                                plog.ActionResult = pa;
                            }
                        }

                        Rev.Attachments = Db.RequestFormAttachments.Where(P => P.FormID == Rev.FormID).ToList();
                        List <ServiceLevel1> Level1lst = new List <ServiceLevel1>();
                        //foreach (string FirstLevelService in MList.Where(P => P.FormID == FormGUID).Select(P => P.MMenu).Distinct())
                        foreach (var FirstLevelService in MList.Where(P => P.FormID == FormGUID).Select(P => new { P.MMenu, P.MMenuGUID, P.ServiceGUID }).Distinct())
                        {
                            if (!string.IsNullOrEmpty(FirstLevelService.MMenu))
                            {
                                ServiceLevel1 Level1 = new ServiceLevel1();
                                Level1.Name        = FirstLevelService.MMenu;
                                Level1.ServiceGUID = FirstLevelService.ServiceGUID;
                                Level1.GUID        = new Guid(FirstLevelService.MMenuGUID);
                                List <ServiceLevel2> Level2lst = new List <ServiceLevel2>();
                                var s = MList.Where(P => P.FormID == FormGUID && P.MMenu == FirstLevelService.MMenu).Distinct();
                                foreach (var SecondLevelService in MList.Where(P => P.FormID == FormGUID && P.MMenu == FirstLevelService.MMenu).DistinctBy(P => P.SubMenu))
                                {
                                    ServiceLevel2 Level2 = new ServiceLevel2();
                                    Level2.Name        = SecondLevelService.SubMenu;
                                    Level2.GUID        = new Guid(SecondLevelService.SubMenuGUID);
                                    Level2.ServiceGUID = SecondLevelService.ServiceGUID;
                                    Level2.SValue      = SecondLevelService.ServiceTypeValue;
                                    List <ServiceLevel3> Level3lst = new List <ServiceLevel3>();
                                    foreach (var ThirsLevelService in MList.Where(P => P.FormID == FormGUID && P.MMenu == FirstLevelService.MMenu && P.SubMenu == SecondLevelService.SubMenu).OrderBy(P => P.ServiceGUID))
                                    {
                                        ServiceLevel3 Level3 = new ServiceLevel3();
                                        Level3.Name        = ThirsLevelService.SSubMenu;
                                        Level3.GUID        = new Guid(ThirsLevelService.ServiceTypeGUID);
                                        Level3.ServiceGUID = ThirsLevelService.ServiceGUID;
                                        if (!string.IsNullOrEmpty(ThirsLevelService.SSubMenu))
                                        {
                                            Level3.SValue      = ThirsLevelService.ServiceTypeValue;
                                            Level3.Approver    = ThirsLevelService.ApproverRuleCode;
                                            Level3.ActionTaker = ThirsLevelService.ActionTakerRuleCode;
                                            Level3.ControlFlag = ThirsLevelService.ControlFlag;
                                            Level3.Enabled     = ThirsLevelService.Enabled;
                                            Level3.Placeholder = ThirsLevelService.Placeholder;
                                        }
                                        else
                                        {
                                            Level3.SValue = null;
                                        }
                                        Level3lst.Add(Level3);
                                    }
                                    if (Level3lst.Count > 0)
                                    {
                                        Level2.Level3 = Level3lst;
                                        //Level2.GUID = Guid.Empty;   // To return Null Value.
                                        Level2.SValue = null;
                                    }
                                    else
                                    {
                                        Level2.Level3 = null;
                                    }
                                    Level2lst.Add(Level2);
                                }
                                if (Level2lst.Count > 0)
                                {
                                    Level1.Level2 = Level2lst;
                                }
                                else
                                {
                                    Level1.Level2 = null;
                                }
                                Level1lst.Add(Level1);
                            }
                        }
                        if (Level1lst.Count > 0)
                        {
                            Rev.RequestList = Level1lst;
                        }
                        else
                        {
                            Rev.RequestList = null;
                        }
                        FormRequests.Add(Rev);
                    }
                }
                else
                {
                    throw new System.ArgumentException("The user has no enough permission to open this item");
                }
            }
            catch (Exception ex)
            {
                FormRequests = null;
                throw ex;
            }
            return(FormRequests);
        }
Пример #5
0
        public List <ChkFrmStatus> getApprovalList(string userid, string employeeid, string applicant, string approvalStartDate, string approvalEndDate, string status, string refid, string createStartDate, string createEndDate, string keyword)
        {
            try
            {
                List <ApproverHistory> rawHistory  = new List <ApproverHistory>();
                List <ChkFrmStatus>    historyList = new List <ChkFrmStatus>();
                string         queryParameter      = "@userid,@applicantEmpNo,@applicant,@approvalStart,@approvalEnd,@status,@refid,@createStart,@createEnd,@keyword";
                SqlParameter[] sqlp =
                {
                    new SqlParameter("userid",         userid),
                    new SqlParameter("applicantEmpNo", DBNull.Value),
                    new SqlParameter("applicant",      DBNull.Value),
                    new SqlParameter("approvalStart",  DBNull.Value),
                    new SqlParameter("approvalEnd",    DBNull.Value),
                    new SqlParameter("status",         DBNull.Value),
                    new SqlParameter("refid",          DBNull.Value),
                    new SqlParameter("createStart",    DBNull.Value),
                    new SqlParameter("createEnd",      DBNull.Value),
                    new SqlParameter("keyword",        DBNull.Value)
                };
                if (!string.IsNullOrEmpty(employeeid))
                {
                    sqlp[1].Value = employeeid;
                }
                if (!String.IsNullOrEmpty(applicant))
                {
                    sqlp[2].Value = applicant;
                }
                if (!String.IsNullOrEmpty(approvalStartDate))
                {
                    sqlp[3].Value = approvalStartDate;
                }
                if (!String.IsNullOrEmpty(approvalEndDate))
                {
                    sqlp[4].Value = approvalEndDate;
                }
                if (!String.IsNullOrEmpty(status))
                {
                    sqlp[5].Value = status;
                }
                if (!String.IsNullOrEmpty(refid))
                {
                    sqlp[6].Value = refid;
                }
                if (!String.IsNullOrEmpty(createStartDate))
                {
                    sqlp[7].Value = createStartDate;
                }
                if (!String.IsNullOrEmpty(createEndDate))
                {
                    sqlp[8].Value = createEndDate;
                }
                if (!String.IsNullOrEmpty(keyword))
                {
                    sqlp[9].Value = keyword;
                }
                rawHistory = Db.Database.SqlQuery <ApproverHistory>("exec [K2_ApproverHistory] " + queryParameter, sqlp.ToArray()).ToList();

                foreach (var request in rawHistory.DistinctBy(p => p.ProcInstID))
                {
                    ChkFrmStatus tmpStatus = new ChkFrmStatus();
                    tmpStatus.FormID         = request.FormID;
                    tmpStatus.ProcInstID     = request.ProcInstID.ToString();
                    tmpStatus.ReferenceID    = request.ReferenceID;
                    tmpStatus.FormStatus     = request.FormStatus;
                    tmpStatus.SubmittedOn    = request.CommentedOn;
                    tmpStatus.ApplicantEMP   = request.ApplicantEmployeeID;
                    tmpStatus.ApplicantFNAME = request.ApplicantFullName;
                    tmpStatus.ApproverEmp    = request.ApproverEmployeeID;
                    tmpStatus.ApproverFNAME  = request.ApproverFullName;
                    tmpStatus.DisplayStatus  = request.DisplayStatus;
                    tmpStatus.LastUser       = request.LastUser;
                    tmpStatus.PreparerFNAME  = request.PreparerFullName;

                    tmpStatus.ActionTakerFullName = request.ActionTakerFullName;
                    tmpStatus.ITSApproverFullName = request.ITSApproverFullName;
                    tmpStatus.ApplicantUserId     = request.ApplicantUserId;

                    List <ServiceLevel1> Level1lst = new List <ServiceLevel1>();
                    foreach (var FirstLevelService in rawHistory.Where(P => P.ProcessLogID == request.ProcessLogID && P.ProcInstID == request.ProcInstID).Select(P => new { P.MMenu, P.MMenuGUID }).Distinct())
                    {
                        ServiceLevel1 Level1 = new ServiceLevel1();
                        Level1.Name = FirstLevelService.MMenu;
                        Level1.GUID = FirstLevelService.MMenuGUID;
                        List <ServiceLevel2> Level2lst = new List <ServiceLevel2>();
                        foreach (var SecondLevelService in rawHistory.Where(P => P.ProcessLogID == request.ProcessLogID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu).DistinctBy(P => P.SubMenu))
                        {
                            ServiceLevel2 Level2 = new ServiceLevel2();
                            Level2.Name   = SecondLevelService.SubMenu;
                            Level2.GUID   = SecondLevelService.SubMenuGUID;
                            Level2.SValue = SecondLevelService.ServiceTypeValue;
                            List <ServiceLevel3> Level3lst = new List <ServiceLevel3>();
                            foreach (var ThirsLevelService in rawHistory.Where(P => P.ProcessLogID == request.ProcessLogID && P.ProcInstID == request.ProcInstID && P.MMenu == FirstLevelService.MMenu && P.SubMenu == SecondLevelService.SubMenu).OrderBy(P => P.ServiceGUID))
                            {
                                ServiceLevel3 Level3 = new ServiceLevel3();
                                Level3.Name        = ThirsLevelService.SSubMenu;
                                Level3.GUID        = ThirsLevelService.SSubMenuGUID;
                                Level3.SValue      = ThirsLevelService.ServiceTypeValue;
                                Level3.ControlFlag = ThirsLevelService.ControlFlag;
                                Level3lst.Add(Level3);
                            }
                            if (Level3lst.Count > 0)
                            {
                                Level2.Level3 = Level3lst;
                                //Level2.GUID = Guid.Empty;   // To return Null Value.
                                Level2.SValue = null;
                            }
                            else
                            {
                                Level2.Level3 = null;
                            }
                            Level2lst.Add(Level2);
                        }
                        if (Level2lst.Count > 0)
                        {
                            Level1.Level2 = Level2lst;
                        }
                        else
                        {
                            Level1.Level2 = null;
                        }
                        Level1lst.Add(Level1);
                    }

                    if (Level1lst.Count > 0)
                    {
                        tmpStatus.RequestList = Level1lst;
                    }
                    else
                    {
                        tmpStatus.RequestList = null;
                    }
                    historyList.Add(tmpStatus);
                }
                return(historyList);
            } catch (Exception ex)
            {
                throw ex;
            }
        }