public ClaimSideBarViewModel GetDiaryStatus(int ClaimId)
        {
            //ClaimSideBarViewModel DiaryDetails = (from diary in _context.ClaimDiaries
            //                                      join rds in _context.refDiaryStatus on diary.DiaryStatusID equals rds.DiaryStatusID
            //                                      where diary.ClaimID == ClaimId && diary.IsCompleted != true && diary.IsDeleted != true
            //                                      orderby diary.DueDate
            //                                      select new ClaimSideBarViewModel()
            //                                      {
            //                                          status = rds.DiaryStatusName,
            //                                          NextDiaryDueDate = diary.DueDate,

            //                                      }).FirstOrDefault();

            ClaimSideBarViewModel DiaryDetails = (from c in _context.Claims
                                                  where c.ClaimID == ClaimId
                                                  select new ClaimSideBarViewModel()
            {
                NextDiaryDue = c.UserAdjuster == null ? "Assign Adjuster" : c.IsClaimClosed ? "File Closed" : c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted != true).OrderBy(y => y.DueDate).FirstOrDefault().refDiaryStatu.DiaryStatusName ?? c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted).OrderByDescending(y => y.CompletedDate).FirstOrDefault().refDiaryStatu.DiaryStatusName,
                NextDiaryDueDate = c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted != true).OrderBy(y => y.DueDate).FirstOrDefault().DueDate,
            }).FirstOrDefault();

            return(DiaryDetails);
        }
        public ClaimSideBarViewModel GetClaimDetailsForSidebar(int ClaimId)
        {
            ClaimSideBarViewModel details      = null;
            ClaimSideBarViewModel diaryDetails = null;
            ClaimSideBarViewModel activeDiary  = null;

            details = (from clm in _context.Claims
                       join cln in _context.Clients on clm.ClientID equals cln.ClientID
                       join clb in _context.ClientBranches on clm.ClientBranchID equals clb.CBranchId into joined
                       from clientBranch in joined.DefaultIfEmpty()
                       join us in _context.Users on clm.AdjusterID equals us.UserID into userjoin
                       from user in userjoin.DefaultIfEmpty()
                       join rct in _context.refClaimTypes on clm.ClaimTypeID equals rct.ClaimTypeID into claimjoin
                       from claim in claimjoin.DefaultIfEmpty()
                       join rcb in _context.ClientBillingProfiles on clm.BillingProfileID equals rcb.BillProfileID into billjoin
                       from billingprofile in billjoin.DefaultIfEmpty()
                       join cc in _context.ClientContacts on clm.ReportTo equals cc.ClientContactId into contactjoin
                       from clientContact in contactjoin.DefaultIfEmpty()
                       join loss in _context.refTypeOfLosses on clm.TypeofLoss equals loss.TypeOfLossID into lossjoin
                       from typeofloss in lossjoin.DefaultIfEmpty()
                       join client in _context.Clients on clm.ClientID equals client.ClientID
                       join claimInjury in _context.ClaimInjuryDetails on clm.ClaimID equals claimInjury.ClaimID into wcLossjoin
                       from WCInjury in wcLossjoin.DefaultIfEmpty()

                       where clm.ClaimID == ClaimId
                       select new ClaimSideBarViewModel()
            {
                Adjuster = user.FirstName + " " + user.LastName,
                BillingPrograme = billingprofile.ProgrameName,
                PolicyNumber = clm.PolicyNumber ?? clm.AdjusterFile,
                InsurerClaimNumber = clm.InsurerClaimNumber,
                CompanyBranchName = clientBranch.CBranchName,
                ClaimType = claim.ClaimTypeName,
                ClientBranchName = clientBranch.CBranchName,
                ReportTo = clientContact.CCFirstName + " " + clientContact.CCLastName,
                TypeOfLoss = clm.ClaimTypeID == 2 ? _context.refIncidentTypes.Where(y => y.ID == WCInjury.IncidenttypeId).FirstOrDefault().IncedentTypeName : typeofloss.TypeOfLoss,
                ClientId = client.ClientID,
                Client = client.ClientName,
                LossDate = clm.ClaimTypeID == 2 ? WCInjury.InjuryDate : clm.LossDate,
                AdjFileNumber = clm.AdjusterFile,
                ClientContactName = clm.ClientContact.CCFirstName + " " + clm.ClientContact.CCLastName,
                lossdescription = clm.LossDescription,
                InsuredDetailSideBarViewModel = (from ins in _context.Insureds
                                                 where ins.ClaimID == ClaimId
                                                 select new InsuredDetailSideBarViewModel()
                {
                    Name = ins.InsuredName,
                    BusinessPhone = ins.BusinessPhoneNumber,
                    HomePhone = ins.HomePhoneNumber,
                    MobilePhone = ins.MobileNumber,
                    PrimaryEmail = ins.PrimaryEmail,
                    SecondryEmail = ins.SecondaryEmail
                }).FirstOrDefault(),
                ClientDetailSideBarViewModel = (new ClientDetailSideBarViewModel()
                {
                    Address = clm.Client.BillingAdd1 + " " + clm.Client.BillingAdd2,
                    Email = clm.Client.ReportingEmail,
                    Name = clm.Client.ClientName,
                    PhoneNumber = clm.Client.Phone,
                    Contact = clm.ClientContact.CCFirstName + " " + clm.ClientContact.CCLastName,
                    Fax = clm.Client.FaxNumber
                }),
                ReportToDetailSideBarViewModel = (
                    new ReportToDetailSideBarViewModel()
                {
                    Name = clm.ClientContact.CCFirstName + " " + clm.ClientContact.CCLastName,
                    Address = clm.ClientContact.CCAddress1 + " " + clm.ClientContact.CCAddress2,
                    Email = clm.ClientContact.CCEmail,
                    Phone = clm.ClientContact.CCPhoneNumber
                }
                    ),
                AdjusterDetailSideBarViewModel = (from usr in _context.Users
                                                  where usr.UserID == clm.UserID && usr.IsAdjuster
                                                  select new AdjusterDetailSideBarViewModel()
                {
                    Address = usr.Address1 + " " + usr.Address2,
                    CompanyPhone = (_context.Users.Where(x => x.PortalID == usr.PortalID && x.RoleID == _context.refRoles.Where(v => v.RoleName == "PortalAdmin").Select(m => m.RoleId).FirstOrDefault()).Select(y => y.Phone)).FirstOrDefault(),
                    Email = usr.Email,
                    Employee = usr.EmployeeNum,
                    Mobile = usr.Phone,
                    Name = usr.FirstName + " " + usr.LastName,
                }).FirstOrDefault()
            }).FirstOrDefault();

            if (details == null)
            {
                details = new ClaimSideBarViewModel();
            }

            //diaryDetails = (from diary in _context.ClaimDiaries
            //                join rds in _context.refDiaryStatus on diary.DiaryStatusID equals rds.DiaryStatusID
            //                where diary.ClaimID == ClaimId && diary.IsCompleted != true && diary.IsDeleted != true
            //                orderby diary.DueDate
            //                select new ClaimSideBarViewModel()
            //                {
            //                    NextDiaryDue = rds.DiaryStatusName,
            //                    NextDiaryDueDate = diary.DueDate,

            //                }).FirstOrDefault();



            diaryDetails = (from c in _context.Claims

                            where c.ClaimID == ClaimId

                            select new ClaimSideBarViewModel()
            {
                // NextDiaryDue = claim.UserAdjuster == null ? "Assign Adjuster" : claim.IsClaimClosed ? "File Closed" : refDiary.DiaryStatusName ?? _context.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted).OrderByDescending(y => y.CompletedDate).FirstOrDefault().refDiaryStatu.DiaryStatusName,
                NextDiaryDue = c.UserAdjuster == null ? "Assign Adjuster" : c.IsClaimClosed ? "File Closed" : c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted != true).OrderBy(y => y.DueDate).FirstOrDefault().refDiaryStatu.DiaryStatusName ?? c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted).OrderByDescending(y => y.CompletedDate).FirstOrDefault().refDiaryStatu.DiaryStatusName,
                NextDiaryDueDate = c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted != true).OrderBy(y => y.DueDate).FirstOrDefault().DueDate == null ? c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted).OrderByDescending(y => y.CompletedDate).FirstOrDefault().DueDate : c.ClaimDiaries.Where(y => (y.IsDeleted ?? false) == false && y.IsCompleted).OrderByDescending(y => y.CompletedDate).FirstOrDefault().DueDate,
            }).FirstOrDefault();

            //for Active diary
            if (_context.Claims.Any(x => x.ClaimID == ClaimId && (x.IsDeleted ?? false) == false && x.AdjusterID != null))
            {
                activeDiary = _context.ClaimDiaries.Include(x => x.refDiaryStatu).Where(x => x.ClaimID == ClaimId && (x.IsDeleted ?? false) == false && x.IsCompleted == false).OrderBy(x => x.DueDate).Select(x => new ClaimSideBarViewModel
                {
                    ActiveDiaryStatus   = x.refDiaryStatu.DiaryStatusName,
                    ActiveDiaryStatusId = x.refDiaryStatu.DiaryStatusID
                }).FirstOrDefault();
            }
            else
            {
                activeDiary = new ClaimSideBarViewModel
                {
                    ActiveDiaryStatus   = "Assign Adjuster",
                    ActiveDiaryStatusId = 0
                };
            }


            //if (insuredDetails != null)
            //{
            //    details.Insured = insuredDetails.Insured;

            //}
            //else
            //{
            //    details.Insured = "";
            //}
            if (diaryDetails != null)
            {
                details.NextDiaryDue     = diaryDetails.NextDiaryDue;
                details.NextDiaryDueDate = diaryDetails.NextDiaryDueDate;
                if (diaryDetails.NextDiaryDueDate != null)
                {
                    System.DateTime currentdate = System.DateTime.Now;
                    System.TimeSpan ts          = currentdate.Subtract((System.DateTime)diaryDetails.NextDiaryDueDate);
                    if (ts.TotalDays > 0)
                    {
                        details.Datelate = ts.TotalDays;
                    }
                    else
                    {
                        details.Datelate = 0;
                    }
                }
            }
            else
            {
                details.NextDiaryDue     = null;
                details.NextDiaryDueDate = null;
                details.Datelate         = 0;
            }
            decimal?totalreservebalance = (from r in _context.ClaimReserves
                                           where r.ClaimID == ClaimId
                                           select r.ReserveBalance).Sum();

            decimal?netClaimPayable = (from r in _context.ClaimLossTotals
                                       where r.ClaimID == ClaimId
                                       select r.ClaimGrossNetPayable).Sum();

            details.LossDateStr         = details.LossDate.GetValueOrDefault().Date.ToShortDateString() == "1/1/0001" ? "" : details.LossDate.GetValueOrDefault().Date.ToShortDateString();
            details.NextDiaryDueDateStr = details.NextDiaryDueDate.GetValueOrDefault().ToShortDateString();

            details.OutstandingReserve = totalreservebalance == null ? "" : Convert.ToDecimal(totalreservebalance).ToString("C");
            details.NetClaimPayble     = netClaimPayable;

            //assign active diary value
            if (activeDiary != null)
            {
                details.ActiveDiaryStatus   = activeDiary.ActiveDiaryStatus;
                details.ActiveDiaryStatusId = activeDiary.ActiveDiaryStatusId;
            }

            return(details);
        }