public ActionResult SaveNotes(BL.NotesData ModelNotes)
        {
            try
            {
                if (Service == null)
                {
                    Service = BL.OrganizationUtility.GetCRMService();
                }

                if (BL.CurrentUser.Instance != null && BL.CurrentUser.Instance.VerifiedUser.UserId != Guid.Empty)
                {
                    Entity entity = new Entity("annotation");
                    entity["subject"]  = " by " + BL.CurrentUser.Instance.VerifiedUser.UserName;
                    entity["notetext"] = "*WEB*" + ModelNotes.notetext;
                    if (ModelNotes.Attachment != null)
                    {
                        if (ModelNotes.Attachment.ContentLength > 0)
                        {
                            var fname      = Path.GetFileNameWithoutExtension(ModelNotes.Attachment.FileName) + (DateTime.Now).ToString("ddMMyyhhmmss");
                            var FExtension = Path.GetExtension(ModelNotes.Attachment.FileName);
                            var fileName   = fname + FExtension;//
                            //var fileName = Path.GetFileName(ModelNotes.Attachment.FileName);// + (DateTime.Now).ToString("dd-MM-yyyy"));

                            var path = Path.Combine(Server.MapPath("~/App_Data/"), fileName);
                            ModelNotes.Attachment.SaveAs(path);
                            FileStream stream   = new FileStream(path, FileMode.Open);
                            byte[]     byteData = new byte[stream.Length];
                            stream.Read(byteData, 0, byteData.Length);
                            stream.Close();
                            entity["filename"]     = fileName;
                            entity["mimetype"]     = ModelNotes.Attachment.ContentType;
                            entity["documentbody"] = System.Convert.ToBase64String(byteData);
                        }
                    }
                    EntityReference IncidentIdNew = new EntityReference("incident", ModelNotes.IncidentId);
                    entity["objectid"] = IncidentIdNew;
                    EntityReference User = new EntityReference("contact", BL.CurrentUser.Instance.VerifiedUser.UserId);
                    //entity["createdby"] = User.Id;
                    Service.Create(entity);

                    //return View("TicketsNotes");
                }
                else
                {
                    return(RedirectToAction("../Activity/Login"));
                }
                ViewBag.LiDashboard = "class=";
                ViewBag.LiGetAllCasesForIncident = "class=active";
                ViewBag.LiCreateCases            = "class=";
                ViewBag.LiPassword = "******";
                return(Redirect("TicketsNotes?Id=" + ModelNotes.IncidentId));
            }
            catch (Exception)
            {
                return(RedirectToAction("../Activity/Login"));
            }
        }
Пример #2
0
        public ActionResult Dashboard()
        {
            if (BL.CurrentUser.Instance != null && BL.CurrentUser.Instance.VerifiedUser.UserId != Guid.Empty)
            {
                if (Service == null)
                {
                    Service = BL.OrganizationUtility.GetCRMService();
                }

                Session["Uname"] = BL.CurrentUser.Instance.VerifiedUser.FirstName + " " + BL.CurrentUser.Instance.VerifiedUser.LastName;
                ViewBag.Uname    = BL.CurrentUser.Instance.VerifiedUser.UserName;

                BL.NotesData Model = new BL.NotesData()
                {
                    lstPortalUser = null, lstAssignedPortalUser = null, lstDataRow = null, lstHeaderColumn = null
                };
                Guid             DocumentId = new Guid();
                EntityCollection Col        = PortalRepository.GetNameWiseDocumentId("new_documentmanagementsystem", Service, BL.CurrentUser.Instance.VerifiedUser.UserId, BL.CurrentUser.Instance.VerifiedUser.Documenttyp);
                if (Col != null && Col.Entities.Count > 0)
                {
                    foreach (Entity enty in Col.Entities)
                    {
                        DocumentId = new Guid(enty.Attributes["new_documentmanagementsystemid"].ToString());
                    }
                }

                Model.IncidentId = DocumentId;


                //BL.DashboardData CounterData = PortalRepository.GetCounterDocumentNotesData("annotation", Service, Model.IncidentId, BL.CurrentUser.Instance.VerifiedUser.LastName);

                BL.DashboardData DashData = new BL.DashboardData();

                //DashData.Approved = CounterData.Approved;
                // DashData.Reject = CounterData.Reject;
                // DashData.Pending = CounterData.Pending;

                ViewBag.LiDashboard = "class=active";
                ViewBag.LiGetAllCasesForIncident = "class=";
                ViewBag.LiCreateCases            = "class=";
                ViewBag.LiPassword = "******";
                return(View(DashData));
                //    Service = BL.CRMUtility.GetCRMService();

                //List<BL.Activity> lstActivity = PortalUserRepository.GetAllActivity(Service, BL.CurrentUser.Instance.VerifiedUser.UserId, Guid.Empty);
            }
            else
            {
                return(RedirectToAction("Login"));
            }
        }
        public ActionResult ViewTicketsNotes()
        {
            try
            {
                if (BL.CurrentUser.Instance != null && BL.CurrentUser.Instance.VerifiedUser.UserId != Guid.Empty && !string.IsNullOrWhiteSpace(Request.QueryString["Id"]))
                {
                    BL.NotesData Model = new BL.NotesData();

                    Model.IncidentId = new Guid(Request.QueryString["Id"].ToString());

                    //if (lstTroubleTicketNotes == null || lstTroubleTicketNotes.Count <= 0)
                    lstTroubleTicketNotes = PortalRepository.GetNotesData("annotation", Service, Model.IncidentId);

                    if (lstTroubleTicketNotes.Count > 0 && lstTroubleTicketNotes != null)
                    {
                        Model.lstNotesData = lstTroubleTicketNotes;
                        //FileStream stream = new FileStream(Model.lstNotesData.filename, FileMode.OpenOrCreate);
                        //byte[] byteData = new byte[stream.Length];
                        //stream.Write(byteData, 0, byteData.Length);
                        //stream.Close();
                        //System.Convert.FromBase64CharArray(byteData);
                    }
                    //TimeZoneInfo cstZone = TimeZoneInfo.(190);
                    //DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);

                    ViewBag.GetTimeZone = new Func <DateTime, string>(LocalTime);
                    ViewBag.LiDashboard = "class=";
                    ViewBag.LiGetAllCasesForIncident = "class=active";
                    ViewBag.LiCreateCases            = "class=";
                    ViewBag.LiPassword = "******";
                    return(View("ViewTicketsNotes", Model));
                }
                else
                {
                    return(RedirectToAction("../Activity/Login"));
                }
            }
            catch (Exception)
            {
                return(RedirectToAction("../Activity/Login"));
            }
        }
        public ActionResult TicketsEscalationNotes()
        {
            try
            {
                if (BL.CurrentUser.Instance != null && BL.CurrentUser.Instance.VerifiedUser.UserId != Guid.Empty && !string.IsNullOrWhiteSpace(Request.QueryString["Id"]))
                {
                    BL.NotesData Model = new BL.NotesData()
                    {
                        lstDataRow = null, lstHeaderColumn = null
                    };

                    Model.IncidentId = new Guid(Request.QueryString["Id"].ToString());


                    #region Incident Data
                    // BL.NotesData AllCases = new BL.NotesData() { lstDataRow = null, lstHeaderColumn = null };
                    if (Service == null)
                    {
                        Service = BL.OrganizationUtility.GetCRMService();
                    }

                    //savestatecode = Model.statecode;

                    if (lstTroubleTicket == null || lstTroubleTicket.Count <= 0)
                    {
                        lstTroubleTicket = PortalRepository.GetFieldAttribute("incident", Service);
                    }
                    lstTroubleTicket = lstTroubleTicket.OrderBy(x => x.Index).ToList();
                    if (lstTroubleTicket != null && lstTroubleTicket.Count > 0)
                    {
                        List <BL.DataRow> lstDataRowValue = new List <BL.DataRow>();
                        EntityCollection  Col             = PortalRepository.GetIdWiseEntityRecords("incident", lstTroubleTicket, Service, BL.CurrentUser.Instance.VerifiedUser.UserId, new Guid(BL.CurrentUser.Instance.VerifiedUser.CompanyName), Model.IncidentId);
                        if (Col != null && Col.Entities.Count > 0)
                        {
                            foreach (Entity enty in Col.Entities)
                            {
                                List <string> OneDataRowValue = new List <string>();
                                for (int i = 0; i < lstTroubleTicket.Count; i++)
                                {
                                    if (enty.Contains(lstTroubleTicket[i].FieldName) && enty.Attributes[lstTroubleTicket[i].FieldName] != null)
                                    {
                                        OneDataRowValue.Add(GetFieldValue(enty, lstTroubleTicket[i].FieldName, lstTroubleTicket[i].FieldType));
                                    }
                                    else
                                    {
                                        OneDataRowValue.Add("");
                                    }
                                }
                                lstDataRowValue.Add(new BL.DataRow()
                                {
                                    DataRoValue = OneDataRowValue.ToArray()
                                });
                            }
                        }
                        if (lstDataRowValue.Count > 0 && lstTroubleTicket.Count > 0)
                        {
                            Model = new BL.NotesData()
                            {
                                lstDataRow = lstDataRowValue, lstHeaderColumn = lstTroubleTicket, IncidentId = new Guid(Request.QueryString["Id"].ToString())
                            }
                        }
                        ;
                        else
                        {
                            Model = new BL.NotesData()
                            {
                                lstDataRow = null, lstHeaderColumn = null
                            }
                        };
                    }
                    #endregion

                    lstTroubleTicketNotes = PortalRepository.GetNotesData("annotation", Service, Model.IncidentId);

                    if (lstTroubleTicketNotes.Count > 0 && lstTroubleTicketNotes != null)
                    {
                        Model.lstNotesData = lstTroubleTicketNotes;
                    }
                    ViewBag.GetTimeZone = new Func <DateTime, string>(LocalTime);
                    ViewBag.LiDashboard = "class=";
                    ViewBag.LiGetAllCasesForIncident = "class=active";
                    ViewBag.LiCreateCases            = "class=";
                    ViewBag.LiPassword = "******";
                    return(View("TicketsEscalationNotes", Model));
                }
                else
                {
                    return(RedirectToAction("../Activity/Login"));
                }
            }
            catch (Exception)
            {
                return(RedirectToAction("../Activity/Login"));
            }
        }
Пример #5
0
        public static BL.DashboardData GetCounterDocumentNotesData(string EntityName, IOrganizationService _service, Guid Id, string Search, string UserType, string ApprovalStatus, string PortalUser, DateTime StartDate, DateTime EndDate)
        {
            List <BL.NotesData> lst = new List <BL.NotesData>();

            Entity           ConfigEntity = null;
            EntityCollection Cols         = null;



            if (UserType == "125970000")
            {
                QueryExpression QueryShared = new QueryExpression("mhl_portalnoteshared");
                QueryShared.ColumnSet = new ColumnSet(true);
                QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_portaluser", ConditionOperator.Equal, BL.CurrentUser.Instance.VerifiedUser.UserId));
                EntityCollection ColsShared = _service.RetrieveMultiple(QueryShared);

                var SharedDocument = ColsShared.Entities.Select(x => x.Attributes["mhl_documentnotesid"]).ToArray();

                if (SharedDocument.Length > 0)
                {
                    QueryExpression Query = new QueryExpression(EntityName);
                    Query.ColumnSet = new ColumnSet(new[] { "subject", "notetext", "objectid", "annotationid", "createdby", "createdon", "filename", "documentbody", "mimetype" });
                    FilterExpression filter = new FilterExpression(LogicalOperator.And);

                    FilterExpression filter1 = new FilterExpression(LogicalOperator.And);
                    filter1.Conditions.Add(new ConditionExpression("annotationid", ConditionOperator.In, ColsShared.Entities.Select(x => x.Attributes["mhl_documentnotesid"]).ToArray()));
                    if (Id != Guid.Empty)
                    {
                        filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.Equal, Id));
                    }
                    else
                    {
                        QueryExpression query = new QueryExpression("new_documentmanagementsystem");
                        query.ColumnSet = new ColumnSet(true);
                        EntityCollection Col = _service.RetrieveMultiple(query);
                        if (Col != null && Col.Entities.Count > 0)
                        {
                            filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.In, Col.Entities.Select(x => x.Attributes["new_documentmanagementsystemid"]).ToArray()));
                        }
                    }
                    // filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrAfter, Convert.ToDateTime(StartDate).ToString("yyyy-MM-dd")));
                    // filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrBefore, Convert.ToDateTime(EndDate).ToString("yyyy-MM-dd")));
                    if (PortalUser != null)
                    {
                        filter1.Conditions.Add(new ConditionExpression("subject", ConditionOperator.Like, "%" + PortalUser + "%"));
                    }

                    FilterExpression filter2 = new FilterExpression(LogicalOperator.Or);
                    if (Search != null)
                    {
                        var splitted = Search.Split(' ');
                        for (int i = 0; i < splitted.Count(); i++)
                        {
                            filter2.Conditions.Add(new ConditionExpression("notetext", ConditionOperator.Like, "%" + splitted[i].ToString() + "%"));
                        }
                    }


                    filter.AddFilter(filter1);
                    filter.AddFilter(filter2);
                    Query.Criteria = filter;
                    Query.AddOrder("createdon", OrderType.Descending);
                    Cols = _service.RetrieveMultiple(Query);
                }
            }
            else
            {
                QueryExpression Query = new QueryExpression(EntityName);
                Query.ColumnSet = new ColumnSet(new[] { "subject", "notetext", "objectid", "annotationid", "createdby", "createdon", "filename", "documentbody", "mimetype" });

                //Query.LinkEntities.Add(new LinkEntity(EntityName, "mhl_portalnoteshared", "annotationid", "mhl_documentnotesid", JoinOperator.Natural));
                //Query.LinkEntities[0].Columns.AddColumns("mhl_approvalstatus", "mhl_approvedby");

                FilterExpression filter = new FilterExpression(LogicalOperator.And);

                FilterExpression filter1 = new FilterExpression(LogicalOperator.And);
                if (Id != Guid.Empty)
                {
                    filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.Equal, Id));
                }
                else
                {
                    QueryExpression query = new QueryExpression("new_documentmanagementsystem");
                    query.ColumnSet = new ColumnSet(true);
                    EntityCollection Col = _service.RetrieveMultiple(query);
                    if (Col != null && Col.Entities.Count > 0)
                    {
                        filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.In, Col.Entities.Select(x => x.Attributes["new_documentmanagementsystemid"]).ToArray()));
                    }
                }
                // filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrAfter, Convert.ToDateTime(StartDate).ToString("yyyy-MM-dd")));
                //  filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrBefore, Convert.ToDateTime(EndDate).ToString("yyyy-MM-dd")));
                if (PortalUser != null)
                {
                    filter1.Conditions.Add(new ConditionExpression("subject", ConditionOperator.Like, "%" + PortalUser + "%"));
                }
                FilterExpression filter2 = new FilterExpression(LogicalOperator.Or);
                if (Search != null)
                {
                    var splitted = Search.Split(' ');
                    for (int i = 0; i < splitted.Count(); i++)
                    {
                        filter2.Conditions.Add(new ConditionExpression("notetext", ConditionOperator.Like, "%" + splitted[i].ToString() + "%"));
                    }
                }


                filter.AddFilter(filter1);
                filter.AddFilter(filter2);
                Query.Criteria = filter;
                Query.AddOrder("createdon", OrderType.Descending);
                Cols = _service.RetrieveMultiple(Query);
            }
            if (Cols != null && Cols.Entities.Count > 0)
            {
                for (int i = 0; i < Cols.Entities.Count; i++)
                {
                    ConfigEntity = Cols.Entities[i];

                    if (ConfigEntity != null)
                    {
                        //EntityReference objectid = new EntityReference("incident", (Guid)ConfigEntity.Attributes["objectid"]);
                        BL.NotesData Data = new BL.NotesData();

                        QueryExpression QueryShared = new QueryExpression("mhl_portalnoteshared");
                        QueryShared.ColumnSet = new ColumnSet(true);
                        QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_documentnotesid", ConditionOperator.Equal, new Guid(ConfigEntity.Attributes["annotationid"].ToString()).ToString().Replace("{", "").Replace("}", "")));
                        EntityCollection ColsShared = _service.RetrieveMultiple(QueryShared);

                        if (ColsShared.Entities.Count > 0)
                        {
                            Entity ConfigEntityNew = new Entity();
                            ConfigEntityNew = ColsShared.Entities[0];
                            if (ConfigEntityNew.Attributes.Contains("mhl_approvedby"))
                            {
                                Data.ApprovedBy = ((EntityReference)(ConfigEntityNew["mhl_approvedby"])).Id.ToString();
                            }
                            if (ConfigEntityNew.Attributes.Contains("mhl_approvalstatus"))
                            {
                                Data.ApprovalStatus = ((OptionSetValue)(ConfigEntityNew["mhl_approvalstatus"])).Value.ToString();
                            }
                        }
                        lst.Add(Data);
                    }
                }
            }

            BL.DashboardData DashData = new BL.DashboardData();

            DashData.Approved  = lst.Where(x => x.ApprovalStatus == "125970000").Count().ToString();
            DashData.Reject    = lst.Where(x => x.ApprovalStatus == "125970001").Count().ToString();
            DashData.Pending   = lst.Where(x => x.ApprovalStatus == "125970002").Count().ToString();
            DashData.Processed = lst.Where(x => x.ApprovalStatus == "125970003").Count().ToString();
            //125970000
            //125970001
            //    125970002
            return(DashData);
        }
Пример #6
0
        public static List <BL.NotesData> GetAnnotationIdWiseNotesData(string EntityName, IOrganizationService _service, Guid Id)
        {
            List <BL.NotesData> lst = new List <BL.NotesData>();

            Entity           ConfigEntity = null;
            EntityCollection Cols         = null;

            QueryExpression Query = new QueryExpression(EntityName);

            Query.ColumnSet = new ColumnSet(new[] { "subject", "notetext", "objectid", "annotationid", "createdby", "createdon", "filename", "documentbody", "mimetype" });
            Query.Criteria.AddCondition(new ConditionExpression("annotationid", ConditionOperator.Equal, Id));
            Query.AddOrder("createdon", OrderType.Descending);


            Cols = _service.RetrieveMultiple(Query);

            if (Cols != null && Cols.Entities.Count > 0)
            {
                for (int i = 0; i < Cols.Entities.Count; i++)
                {
                    ConfigEntity = Cols.Entities[i];

                    if (ConfigEntity != null)
                    {
                        //EntityReference objectid = new EntityReference("incident", (Guid)ConfigEntity.Attributes["objectid"]);
                        BL.NotesData Data = new BL.NotesData();
                        if (ConfigEntity.Attributes.Contains("subject"))
                        {
                            Data.subject = ConfigEntity.Attributes["subject"].ToString();// ToString();
                        }
                        else
                        {
                            Data.subject = null;
                        }
                        if (ConfigEntity.Attributes.Contains("notetext"))
                        {
                            Data.notetext = ConfigEntity.Attributes["notetext"].ToString();
                        }
                        else
                        {
                            Data.notetext = string.Empty;
                        }

                        Data.IncidentId = (Guid)((EntityReference)ConfigEntity.Attributes["objectid"]).Id;

                        Data.annotationid = (Guid)(ConfigEntity.Attributes["annotationid"]);

                        if (ConfigEntity.Attributes.Contains("createdby"))
                        {
                            Data.createdby = ((EntityReference)ConfigEntity.Attributes["createdby"]).Name.ToString();
                        }
                        else
                        {
                            Data.createdby = null;
                        }

                        if (ConfigEntity.Attributes.Contains("createdon"))
                        {
                            Data.createdon = (DateTime)(ConfigEntity.Attributes["createdon"]);
                        }
                        else
                        {
                            Data.createdon = DateTime.Now;
                        }

                        if (ConfigEntity.Attributes.Contains("mimetype"))
                        {
                            Data.mimetype = ConfigEntity.Attributes["mimetype"].ToString();
                        }
                        else
                        {
                            Data.mimetype = null;
                        }

                        if (ConfigEntity.Attributes.Contains("filename"))
                        {
                            Data.filename = ConfigEntity.Attributes["filename"].ToString();
                        }
                        else
                        {
                            Data.filename = null;
                        }

                        if (ConfigEntity.Attributes.Contains("documentbody"))
                        {
                            //using (FileStream fileStream = new FileStream(ConfigEntity.Attributes["filename"].ToString(), FileMode.OpenOrCreate))
                            //{
                            //    byte[] fileContent = Convert.FromBase64String(ConfigEntity.Attributes["documentbody"].ToString());
                            //    fileStream.Write(fileContent, 0, fileContent.Length);
                            //    Data.Attachment = (HttpPostedFileBase)fileContent;
                            //}
                            Data.filecontent = ConfigEntity.Attributes["documentbody"].ToString();
                        }
                        else
                        {
                            Data.filecontent = null;
                        }


                        QueryExpression QueryShared = new QueryExpression("mhl_portalnoteshared");
                        QueryShared.ColumnSet = new ColumnSet(true);
                        QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_documentnotesid", ConditionOperator.Equal, new Guid(ConfigEntity.Attributes["annotationid"].ToString()).ToString().Replace("{", "").Replace("}", "")));
                        QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_name", ConditionOperator.NotNull));
                        EntityCollection ColsSharedApprove = _service.RetrieveMultiple(QueryShared);

                        if (ColsSharedApprove.Entities.Count > 0)
                        {
                            Entity ConfigEntityNew = new Entity();
                            ConfigEntityNew = ColsSharedApprove.Entities[0];

                            if (ConfigEntityNew.Attributes.Contains("mhl_name"))
                            {
                                QueryExpression Query1 = new QueryExpression("new_portaluser");
                                Query1.Criteria.AddCondition(new ConditionExpression("new_portaluserid", ConditionOperator.Equal, ((EntityReference)(ConfigEntityNew["mhl_portaluser"])).Id.ToString()));
                                Query1.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
                                Query1.ColumnSet = new ColumnSet(true);
                                EntityCollection UserPortalCol = _service.RetrieveMultiple(Query1);

                                if (UserPortalCol != null)
                                {
                                    if (UserPortalCol.Entities.Count > 0)
                                    {
                                        Data.PortalUsercreatedby = UserPortalCol.Entities[0]["new_fullname"].ToString();
                                    }
                                }
                            }


                            if (ConfigEntityNew.Attributes.Contains("mhl_approvedby"))
                            {
                                Data.ApprovedBy = ((EntityReference)(ConfigEntityNew["mhl_approvedby"])).Id.ToString();

                                QueryExpression Query1 = new QueryExpression("new_portaluser");
                                Query1.Criteria.AddCondition(new ConditionExpression("new_portaluserid", ConditionOperator.Equal, Data.ApprovedBy));
                                Query1.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
                                Query1.ColumnSet = new ColumnSet(true);
                                EntityCollection UserPortalCol = _service.RetrieveMultiple(Query1);
                                if (UserPortalCol != null)
                                {
                                    if (UserPortalCol.Entities.Count > 0)
                                    {
                                        Data.ApprovedByName = UserPortalCol.Entities[0]["new_fullname"].ToString();
                                    }
                                }
                            }
                            if (ConfigEntityNew.Attributes.Contains("mhl_approvalstatus"))
                            {
                                Data.ApprovalStatus = ((OptionSetValue)(ConfigEntityNew["mhl_approvalstatus"])).Value.ToString();
                            }
                        }

                        lst.Add(Data);
                    }
                }
            }



            return(lst);
        }
Пример #7
0
        public static List <BL.NotesData> GetDocumentNotesData(string EntityName, IOrganizationService _service, Guid Id, string Search, string UserType, string ApprovalStatus, string PortalUser, DateTime StartDate, DateTime EndDate)
        {
            List <BL.NotesData> lst = new List <BL.NotesData>();

            //List<BL.User>



            Entity           ConfigEntity = null;
            EntityCollection Cols         = null;


            bool             AllowApproveFlag = false;
            EntityCollection ColsShared       = new EntityCollection();

            if (UserType == "125970000")
            {
                #region Document For User
                QueryExpression QueryShared = new QueryExpression("mhl_portalnoteshared");
                QueryShared.ColumnSet = new ColumnSet(true);
                QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_portaluser", ConditionOperator.Equal, BL.CurrentUser.Instance.VerifiedUser.UserId));
                ColsShared = _service.RetrieveMultiple(QueryShared);

                var SharedDocument = ColsShared.Entities.Select(x => x.Attributes["mhl_documentnotesid"]).ToArray();
                //if (ColsShared.Entities.Count > 0)
                //{
                //    var ApprovedFlag = ColsShared.Entities.Select(x => x.Attributes["mhl_allowtoapprove"]).ToArray();
                //    if (ApprovedFlag[0].ToString().ToLower() == "true")
                //    {
                //        AllowApproveFlag = true;
                //    }


                //}
                if (SharedDocument.Length > 0)
                {
                    QueryExpression Query = new QueryExpression(EntityName);
                    Query.ColumnSet = new ColumnSet(new[] { "subject", "notetext", "objectid", "annotationid", "createdby", "createdon", "filename", "documentbody", "mimetype" });
                    FilterExpression filter = new FilterExpression(LogicalOperator.And);

                    FilterExpression filter1 = new FilterExpression(LogicalOperator.And);
                    filter1.Conditions.Add(new ConditionExpression("annotationid", ConditionOperator.In, ColsShared.Entities.Select(x => x.Attributes["mhl_documentnotesid"]).ToArray()));

                    if (Id != Guid.Empty)
                    {
                        filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.Equal, Id));
                    }
                    else
                    {
                        QueryExpression query = new QueryExpression("new_documentmanagementsystem");
                        query.ColumnSet = new ColumnSet(true);
                        EntityCollection Col = _service.RetrieveMultiple(query);
                        if (Col != null && Col.Entities.Count > 0)
                        {
                            filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.In, Col.Entities.Select(x => x.Attributes["new_documentmanagementsystemid"]).ToArray()));
                        }
                    }

                    //filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrAfter, Convert.ToDateTime(StartDate).ToString("yyyy-MM-dd")));
                    //filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrBefore, Convert.ToDateTime(EndDate).ToString("yyyy-MM-dd")));
                    if (PortalUser != null)
                    {
                        filter1.Conditions.Add(new ConditionExpression("subject", ConditionOperator.Like, "%" + PortalUser + "%"));
                    }

                    FilterExpression filter2 = new FilterExpression(LogicalOperator.Or);
                    if (Search != null)
                    {
                        var splitted = Search.Split(' ');
                        for (int i = 0; i < splitted.Count(); i++)
                        {
                            filter2.Conditions.Add(new ConditionExpression("notetext", ConditionOperator.Like, "%" + splitted[i].ToString() + "%"));
                        }
                    }


                    filter.AddFilter(filter1);
                    filter.AddFilter(filter2);
                    Query.Criteria = filter;
                    Query.AddOrder("createdon", OrderType.Descending);
                    Cols = _service.RetrieveMultiple(Query);
                }
                #endregion
            }
            else
            {
                #region Document For Admin
                QueryExpression Query = new QueryExpression(EntityName);
                Query.ColumnSet = new ColumnSet(new[] { "subject", "notetext", "objectid", "annotationid", "createdby", "createdon", "filename", "documentbody", "mimetype" });

                //Query.LinkEntities.Add(new LinkEntity(EntityName, "mhl_portalnoteshared", "annotationid", "mhl_documentnotesid", JoinOperator.Natural));
                //Query.LinkEntities[0].Columns.AddColumns("mhl_approvalstatus", "mhl_approvedby");

                FilterExpression filter = new FilterExpression(LogicalOperator.And);

                FilterExpression filter1 = new FilterExpression(LogicalOperator.And);

                if (Id != Guid.Empty)
                {
                    filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.Equal, Id));
                }
                else
                {
                    QueryExpression query = new QueryExpression("new_documentmanagementsystem");
                    query.ColumnSet = new ColumnSet(true);
                    EntityCollection Col = _service.RetrieveMultiple(query);
                    if (Col != null && Col.Entities.Count > 0)
                    {
                        filter1.Conditions.Add(new ConditionExpression("objectid", ConditionOperator.In, Col.Entities.Select(x => x.Attributes["new_documentmanagementsystemid"]).ToArray()));
                    }
                }
                //filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrAfter, Convert.ToDateTime(StartDate).ToString("yyyy-MM-dd")));
                //filter1.Conditions.Add(new ConditionExpression("createdon", ConditionOperator.OnOrBefore, Convert.ToDateTime(EndDate).ToString("yyyy-MM-dd")));
                if (PortalUser != null)
                {
                    filter1.Conditions.Add(new ConditionExpression("subject", ConditionOperator.Like, "%" + PortalUser + "%"));
                }
                FilterExpression filter2 = new FilterExpression(LogicalOperator.Or);
                if (Search != null)
                {
                    var splitted = Search.Split(' ');
                    for (int i = 0; i < splitted.Count(); i++)
                    {
                        filter2.Conditions.Add(new ConditionExpression("notetext", ConditionOperator.Like, "%" + splitted[i].ToString() + "%"));
                    }
                }


                filter.AddFilter(filter1);
                filter.AddFilter(filter2);
                Query.Criteria = filter;
                Query.AddOrder("createdon", OrderType.Descending);
                Cols = _service.RetrieveMultiple(Query);
                #endregion
            }
            if (Cols != null && Cols.Entities.Count > 0)
            {
                for (int i = 0; i < Cols.Entities.Count; i++)
                {
                    ConfigEntity = Cols.Entities[i];

                    if (ConfigEntity != null)
                    {
                        //EntityReference objectid = new EntityReference("incident", (Guid)ConfigEntity.Attributes["objectid"]);
                        BL.NotesData Data = new BL.NotesData();
                        if (ConfigEntity.Attributes.Contains("subject"))
                        {
                            Data.subject = ConfigEntity.Attributes["subject"].ToString();// ToString();
                        }
                        else
                        {
                            Data.subject = null;
                        }
                        if (ConfigEntity.Attributes.Contains("notetext"))
                        {
                            Data.notetext = ConfigEntity.Attributes["notetext"].ToString();
                        }
                        else
                        {
                            Data.notetext = string.Empty;
                        }

                        Data.IncidentId = (Guid)((EntityReference)ConfigEntity.Attributes["objectid"]).Id;

                        Data.annotationid = (Guid)(ConfigEntity.Attributes["annotationid"]);

                        if (ConfigEntity.Attributes.Contains("createdby"))
                        {
                            Data.createdby = ((EntityReference)ConfigEntity.Attributes["createdby"]).Name.ToString();
                        }
                        else
                        {
                            Data.createdby = null;
                        }

                        if (ConfigEntity.Attributes.Contains("createdon"))
                        {
                            Data.createdon = (DateTime)(ConfigEntity.Attributes["createdon"]);
                        }
                        else
                        {
                            Data.createdon = DateTime.Now;
                        }

                        if (ConfigEntity.Attributes.Contains("mimetype"))
                        {
                            Data.mimetype = ConfigEntity.Attributes["mimetype"].ToString();
                        }
                        else
                        {
                            Data.mimetype = null;
                        }

                        if (ConfigEntity.Attributes.Contains("filename"))
                        {
                            Data.filename = ConfigEntity.Attributes["filename"].ToString();
                        }
                        else
                        {
                            Data.filename = null;
                        }

                        if (ConfigEntity.Attributes.Contains("documentbody"))
                        {
                            //using (FileStream fileStream = new FileStream(ConfigEntity.Attributes["filename"].ToString(), FileMode.OpenOrCreate))
                            //{
                            //    byte[] fileContent = Convert.FromBase64String(ConfigEntity.Attributes["documentbody"].ToString());
                            //    fileStream.Write(fileContent, 0, fileContent.Length);
                            //    Data.Attachment = (HttpPostedFileBase)fileContent;
                            //}
                            Data.filecontent = ConfigEntity.Attributes["documentbody"].ToString();
                        }
                        else
                        {
                            Data.filecontent = null;
                        }

                        if (ColsShared.Entities.Count > 0)
                        {
                            foreach (Entity entityshar in ColsShared.Entities)
                            {
                                if (Convert.ToString(entityshar.Attributes["mhl_documentnotesid"]) == ConfigEntity.Attributes["annotationid"].ToString().Replace("{", "").Replace("}", ""))
                                {
                                    AllowApproveFlag = Convert.ToBoolean(entityshar.Attributes["mhl_allowtoapprove"]);
                                }
                            }
                            //var ApprovedFlag = ColsShared.Entities.Where(y => y.Attributes["mhl_documentnotesid"] == ConfigEntity.Attributes["annotationid"].ToString().Replace("{", "").Replace("}", ""));//.Select(x => x.Attributes["mhl_allowtoapprove"]).ToArray();
                            //if (ApprovedFlag[0].ToString().ToLower() == "true")
                            //{
                            //    AllowApproveFlag = true;
                            //}
                        }
                        Data.AllowApprove = AllowApproveFlag;

                        QueryExpression QueryShared = new QueryExpression("mhl_portalnoteshared");
                        QueryShared.ColumnSet = new ColumnSet(true);
                        QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_documentnotesid", ConditionOperator.Equal, new Guid(ConfigEntity.Attributes["annotationid"].ToString()).ToString().Replace("{", "").Replace("}", "")));
                        QueryShared.Criteria.AddCondition(new ConditionExpression("mhl_name", ConditionOperator.NotNull));
                        EntityCollection ColsSharedApprove = _service.RetrieveMultiple(QueryShared);

                        if (ColsSharedApprove.Entities.Count > 0)
                        {
                            Entity ConfigEntityNew = new Entity();
                            ConfigEntityNew = ColsSharedApprove.Entities[0];

                            if (ConfigEntityNew.Attributes.Contains("mhl_notesdescription"))
                            {
                                Data.notesdescription = ConfigEntityNew.Attributes["mhl_notesdescription"].ToString();
                            }

                            if (ConfigEntityNew.Attributes.Contains("mhl_name"))
                            {
                                QueryExpression Query = new QueryExpression("new_portaluser");
                                Query.Criteria.AddCondition(new ConditionExpression("new_portaluserid", ConditionOperator.Equal, ((EntityReference)(ConfigEntityNew["mhl_portaluser"])).Id.ToString()));
                                Query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
                                Query.ColumnSet = new ColumnSet(true);
                                EntityCollection UserPortalCol = _service.RetrieveMultiple(Query);

                                if (UserPortalCol != null)
                                {
                                    if (UserPortalCol.Entities.Count > 0)
                                    {
                                        Data.PortalUsercreatedby = UserPortalCol.Entities[0]["new_fullname"].ToString();
                                    }
                                }
                            }


                            if (ConfigEntityNew.Attributes.Contains("mhl_approvedby"))
                            {
                                Data.ApprovedBy = ((EntityReference)(ConfigEntityNew["mhl_approvedby"])).Id.ToString();

                                QueryExpression Query = new QueryExpression("new_portaluser");
                                Query.Criteria.AddCondition(new ConditionExpression("new_portaluserid", ConditionOperator.Equal, Data.ApprovedBy));
                                Query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
                                Query.ColumnSet = new ColumnSet(true);
                                EntityCollection UserPortalCol = _service.RetrieveMultiple(Query);
                                if (UserPortalCol != null)
                                {
                                    if (UserPortalCol.Entities.Count > 0)
                                    {
                                        Data.ApprovedByName = UserPortalCol.Entities[0]["new_fullname"].ToString();
                                    }
                                }
                            }

                            if (ConfigEntityNew.Attributes.Contains("mhl_processedby"))
                            {
                                Data.ProcessedBy = ((EntityReference)(ConfigEntityNew["mhl_processedby"])).Id.ToString();

                                QueryExpression Query = new QueryExpression("new_portaluser");
                                Query.Criteria.AddCondition(new ConditionExpression("new_portaluserid", ConditionOperator.Equal, Data.ProcessedBy));
                                Query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
                                Query.ColumnSet = new ColumnSet(true);
                                EntityCollection UserPortalCol = _service.RetrieveMultiple(Query);
                                if (UserPortalCol != null)
                                {
                                    if (UserPortalCol.Entities.Count > 0)
                                    {
                                        Data.ProcessedByName = UserPortalCol.Entities[0]["new_fullname"].ToString();
                                    }
                                }
                            }

                            if (ConfigEntityNew.Attributes.Contains("mhl_approvalstatus"))
                            {
                                Data.ApprovalStatus = ((OptionSetValue)(ConfigEntityNew["mhl_approvalstatus"])).Value.ToString();
                            }
                        }



                        lst.Add(Data);
                    }
                }
            }

            #region For SuperUser
            if (UserType == "125970002")
            {
                if (ApprovalStatus == null || ApprovalStatus == "0")
                {
                    ApprovalStatus = "125970000,125970003";
                }
            }
            #endregion


            if (ApprovalStatus != null)
            {
                if (ApprovalStatus != "0")
                {
                    var ids = ApprovalStatus.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x => Convert.ToString(x));

                    return(lst.Where(x => ids.Any(y => y == x.ApprovalStatus)).ToList());
                    //return lst.Where(x => x.ApprovalStatus == ApprovalStatus).ToList();
                }
                else
                {
                    return(lst);
                }
            }
            else
            {
                return(lst);
            }
        }