public VisitorDataVM GetVisitorsDetail(string globalSearch)
        {
            VisitorDataVM _visitorDataVM = new VisitorDataVM();;
            var           lstVisitors    = _genericService.VisitorMaster.GetAll().Where(x => x.ContactNo == globalSearch)
                                           .Select(item => new VisitorDataVM
            {
                VisitorId        = item.Id,
                VisitorName      = item.VisitorName,
                Gender           = item.GenderMaster.LookUpValue,
                DOB              = (item.DOB ?? DateTime.MinValue).ToShortDateString(),
                MobileNo         = item.ContactNo,
                EmailId          = item.EmailId,
                IdentificationNo = item.IdNo,
                Nationality      = item.CountryMaster.LookUpValue
            }).AsQueryable();

            if (lstVisitors.Count() > 0)
            {
                _visitorDataVM = lstVisitors.FirstOrDefault();
            }

            return(_visitorDataVM);
        }
        public VisitorDataVM GetVisitorCheckInHistory(long visitorId, string userId)

        {
            var result      = new VisitorDataVM();
            var visitorData = _genericService.VisitorMaster.GetAll().Where(item => item.Id == visitorId).FirstOrDefault();

            if (visitorData != null)
            {
                var query = _genericService.VisitDetails.GetAll().Where(x => x.VisitorId == visitorId).OrderByDescending(item => item.CheckIn);
                List <VisitorCheckInCheckOutHistoryVM> lstVisitorCheckInAndOuttimes = new List <VisitorCheckInCheckOutHistoryVM>();

                if (query.Count() > 0)
                {
                    query.ToList().ForEach(item =>
                    {
                        lstVisitorCheckInAndOuttimes.Add(new VisitorCheckInCheckOutHistoryVM
                        {
                            CheckInDate   = item.CheckIn.Date.ToShortDateString(),
                            CheckInTime   = item.CheckIn.ToLocalTime().ToString("hh:mm tt"),
                            CheckOutTime  = (item.CheckOut == null ? string.Empty : item.CheckOut.Value.ToString("hh:mm tt")),
                            TotalDuration = (item.CheckOut == null ? "N/A" : Utility.TimeSince(item.CheckOut.Value.Subtract(item.CheckIn))),
                            CompanyName   = item.CompanyName,
                            ContactPerson = item.ContactPerson,
                            NoOfPerson    = item.NoOfPerson.ToString(),
                            Purpose       = item.PurposeOfVisit,
                            VahicleNumber = item.VahicleNumber,
                            Floor         = item.Floor
                        });
                    });

                    if (lstVisitorCheckInAndOuttimes.Count > 0)
                    {
                        var latestCheck = lstVisitorCheckInAndOuttimes.FirstOrDefault();

                        if (string.IsNullOrEmpty(latestCheck.CheckOutTime))
                        {
                            result.IsAlreadyCheckIn = true;
                        }
                        else
                        {
                            result.IsAlreadyCheckIn = false;
                        }
                    }
                }


                var shiftAssignedOrNot = _genericService.ShitfAssignment.GetAll().Where(item => item.UserId == userId && item.IsActive).FirstOrDefault();
                if (shiftAssignedOrNot != null)
                {
                    result.IsShiftAssignedToSecurity = true;
                }


                var gateCount = _genericService.GateMaster.GetAll().Count();
                result.IsAnyGateExist   = (gateCount > 0 ? true : false);
                result.VisitorHiostory  = lstVisitorCheckInAndOuttimes.ToList();
                result.DOB              = (visitorData.DOB ?? DateTime.MinValue).ToShortDateString();
                result.EmailId          = visitorData.EmailId;
                result.Gender           = visitorData.GenderMaster.LookUpValue;
                result.TypeOfCard       = visitorData.TypeOfCard.LookUpValue;
                result.IdentificationNo = visitorData.IdNo;
                result.MobileNo         = visitorData.ContactNo;
                result.Nationality      = visitorData.CountryMaster.LookUpValue;
                result.VisitorId        = visitorData.Id;
                result.VisitorName      = visitorData.VisitorName;
                result.CompanyName      = visitorData.CompanyName;
            }

            return(result);
        }