/// <summary> /// Save APIKey and Token for QC user /// </summary> /// <param name="APIKey"></param> /// <param name="APIToken"></param> /// <param name="userID"></param> /// <returns></returns> public bool generateAPIKeyToken(string APIKey, string APIToken, long userID) { bool isSuccess = false; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { var userservice = SmartDostDbContext.UserServiceAccesses.Where(x => x.UserID == userID).FirstOrDefault(); if (userservice != null) { userservice.APIKey = APIKey; userservice.APIToken = APIToken; userservice.ModifiedBy = userID; userservice.ModifiedDate = System.DateTime.Now; SmartDostDbContext.Entry <UserServiceAccess>(userservice).State = System.Data.EntityState.Modified; } else { UserServiceAccess userServiceAccess = new UserServiceAccess(); userServiceAccess.UserID = userID; userServiceAccess.APIKey = APIKey; userServiceAccess.APIToken = APIToken; userServiceAccess.CreatedBy = userID; userServiceAccess.CreatedDate = System.DateTime.Now; SmartDostDbContext.UserServiceAccesses.Add(userServiceAccess); } isSuccess = SmartDostDbContext.SaveChanges() > 0 ? true : false; scope.Complete(); } return(isSuccess); }
public bool submitReviewerResponse(ReviewerResponse reviewerResponse, long userID, long RoleID) { bool IsSuccess = false; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { AuditLog log = new AuditLog() { AuditID = reviewerResponse.AuditID, CreatedBy = reviewerResponse.userID, CreatedDate = System.DateTime.Now, IsDeleted = false, Remarks = reviewerResponse.Remarks, ReviewBy = reviewerResponse.userID, Status = reviewerResponse.Status }; SmartDostDbContext.AuditLogs.Add(log); if (reviewerResponse.Status != (byte)AspectEnums.RaceAuditStatus.Comments) { var auditsummary = SmartDostDbContext.AuditSummaries.Where(x => x.AuditID == reviewerResponse.AuditID).ToList().FirstOrDefault(); auditsummary.CurrentStatus = reviewerResponse.Status; auditsummary.ModifiedBy = reviewerResponse.userID; auditsummary.ModifiedDate = DateTime.Now; if (RoleID == (int)AspectEnums.Roles.QC1) { auditsummary.QC1Status = reviewerResponse.Status; auditsummary.QC1Remarks = reviewerResponse.Remarks; auditsummary.qc1ActionDate = System.DateTime.Now; } if (RoleID == (int)AspectEnums.Roles.QC2) { auditsummary.QC2Status = reviewerResponse.Status; auditsummary.QC2Remarks = reviewerResponse.Remarks; auditsummary.qc2ActionDate = System.DateTime.Now; } if (RoleID == (int)AspectEnums.Roles.Superior) { auditsummary.SupStatus = reviewerResponse.Status; auditsummary.SupRemarks = reviewerResponse.Remarks; auditsummary.supActionDate = System.DateTime.Now; } SmartDostDbContext.Entry <AuditSummary>(auditsummary).State = System.Data.EntityState.Modified; } IsSuccess = SmartDostDbContext.SaveChanges() > 0 ? true : false; scope.Complete(); } return(IsSuccess); }
/// <summary> /// Approves/Rejectes beat submitted by user. /// </summary> /// <param name="coverageCollection">The coverage collection.</param> /// <returns></returns> public bool ApproveRejectBeat(Dictionary <int, int> coverageCollection) { bool isSuccess = false; SystemSetting systemSetting = SmartDostDbContext.SystemSettings.FirstOrDefault(k => k.SettingID > 0); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { foreach (KeyValuePair <int, int> item in coverageCollection) { CoveragePlan coveragePlan = SmartDostDbContext.CoveragePlans.SingleOrDefault(c => c.CoverageID == item.Key); if (coveragePlan != null && coveragePlan.CoverageID > 0) { DateTime firstwindowfirst = CustomFormatDate(systemSetting.CoveragePlanFirstWindow.Substring(0, 8)); DateTime firstwindowsecond = CustomFormatDate(systemSetting.CoveragePlanFirstWindow.Substring(9, 8)); DateTime secondwindowfirst = CustomFormatDate(systemSetting.CoveragePlanSecondWndow.Substring(0, 8)); DateTime secondwindowsecond = CustomFormatDate(systemSetting.CoveragePlanSecondWndow.Substring(9, 8)); coveragePlan.StatusID = item.Value; if (coveragePlan.StatusID == 1) { coveragePlan.Remarks = "Beat Approved"; } else if (coveragePlan.StatusID == 2) { coveragePlan.Remarks = "Beat Rejected"; } coveragePlan.ModifiedDate = DateTime.Now.Date; if (!(coveragePlan.CoverageDate.Date >= firstwindowfirst && coveragePlan.CoverageDate.Date <= firstwindowsecond) || !(coveragePlan.CoverageDate.Date >= secondwindowfirst && coveragePlan.CoverageDate.Date <= secondwindowsecond)) { if (item.Value == 1) { SmartDostDbContext.UserSystemSettings.Add(new UserSystemSetting() { UserID = coveragePlan.UserID, IsAPKLoggingEnabled = false, CoverageExceptionWindow = null, IsCoverageException = true, CreatedDate = DateTime.Now, CreatedBy = coveragePlan.CreatedBy, ModifiedDate = null, ModifiedBy = null, IsDeleted = false }); } } } isSuccess = SmartDostDbContext.SaveChanges() > 0 ? true : false; } scope.Complete(); } return(isSuccess); }
/// <summary> /// Method to update pending user's coverage /// </summary> /// <param name="userIDList">user ID list</param> /// <param name="status">status</param> /// <returns>returns boolean status</returns> public bool UpdatePendingCoverage(List <long> userIDList, int status) { bool isSuccess = false; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { foreach (long id in userIDList) { var plans = SmartDostDbContext.CoveragePlans.Where(k => k.UserID == id && k.StatusID == 0).ToList(); if (plans != null && plans.Count > 0) { foreach (CoveragePlan plan in plans) { plan.ModifiedDate = System.DateTime.Now; plan.StatusID = status; if (plan.StatusID == (int)AspectEnums.BeatStatus.Approved) { plan.Remarks = "Beat Approved"; } else if (plan.StatusID == 2) { plan.Remarks = "Beat Rejected"; } SmartDostDbContext.Entry <CoveragePlan>(plan).State = System.Data.EntityState.Modified; } SmartDostDbContext.SaveChanges(); } if (status == (int)AspectEnums.BeatStatus.Approved) { var userSettings = SmartDostDbContext.UserSystemSettings.FirstOrDefault(k => k.UserID == id && !k.IsDeleted); if (userSettings != null) { userSettings.CoverageExceptionWindow = null; userSettings.IsCoverageException = false; userSettings.ModifiedDate = System.DateTime.Now; SmartDostDbContext.Entry <UserSystemSetting>(userSettings).State = System.Data.EntityState.Modified; SmartDostDbContext.SaveChanges(); } } } scope.Complete(); isSuccess = true; } return(isSuccess); }
/// <summary> /// Select list of modules in a survey Response /// </summary> /// <param name="surveyResponseID"></param> /// <returns></returns> public List <SPGetAuditQuestionDetails_Result> GetSurveyModulesList(long surveyResponseID) { List <SPGetAuditQuestionDetails_Result> result = new List <SPGetAuditQuestionDetails_Result>(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { result = SmartDostDbContext.SPGetAuditQuestionDetails(surveyResponseID).ToList(); scope.Complete(); } return(result); }
/// <summary> /// Get product Audit data /// </summary> /// <param name="productAuditDTO"></param> /// <returns></returns> public List <SpProductAuditSummary_Result> GetProductAuditdata(int auditID) { List <SpProductAuditSummary_Result> result = new List <SpProductAuditSummary_Result>(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { result = SmartDostDbContext.SpProductAuditSummary(auditID).ToList(); scope.Complete(); } return(result); }
public List <SpAuditSummarySearch_Result> GetSearchAuditdata(AuditSearch auditSearch, long userID, long RoleID) { List <SpAuditSummarySearch_Result> result = new List <SpAuditSummarySearch_Result>(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { result = SmartDostDbContext.SpAuditSummarySearch(fromDate: auditSearch.Assessment_From_Date, toDate: auditSearch.Assessment_To_Date, currentStatus: null, state: auditSearch.Unit, city: auditSearch.Region, supFromDate: auditSearch.SupdateFrom, supToDate: auditSearch.SupdateTo, supStatus: auditSearch.supStatus, qC1FromDate: auditSearch.QClevel1datefrom, qC1ToDate: auditSearch.QClevel1dateto, qC1Status: auditSearch.qC1Status, qC2FromDate: auditSearch.QClevel2DateFrom, qC2ToDate: auditSearch.QClevel2DateTo, qC2Status: auditSearch.qC2Status, storeCode: auditSearch.storeCode, advanceFilterRequired: auditSearch.advanceFilterRequired, loggedUserID: userID, loggedUserRoleID: RoleID).ToList(); scope.Complete(); } return(result); }
/// <summary> /// Records which have Status id 2 will delete from the table. /// </summary> /// <param name="statusID">represent 0 if rejected, 1 if approved</param> /// <returns>Mehtod will return confirmation message if records deleted from the table.</returns> public string DeleteBeat(int statusID) { string statusMessage = string.Empty; if (statusID == 2) { var coveragePlanCollection = SmartDostDbContext.CoveragePlans.Where(w => w.StatusID == statusID); foreach (CoveragePlan coveragePlan in coveragePlanCollection) { SmartDostDbContext.CoveragePlans.Remove(coveragePlan); } SmartDostDbContext.SaveChanges(); return(statusMessage = "Beat deleted!"); } else { return(statusMessage = "Beat not deleted!"); } }
/// <summary> /// Method to update user password on the basis of user employeeid /// </summary> /// <param name="usermaster">usermaster table instance</param> /// <param name="employeeid">employee ID</param> /// <param name="newpassword">New Password</param> private void UpdateUserPassword(UserMaster usermaster, string employeeid, string newpassword) { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { if (usermaster == null) { usermaster = new UserMaster(); } usermaster.Password = newpassword; usermaster.AccountStatus = 1; usermaster.IsPinRegistered = true; usermaster.ModifiedDate = System.DateTime.Now; SmartDostDbContext.SaveChanges(); scope.Complete(); } }
/// <summary> /// Update user login history on the basis of user login status and history /// </summary> /// <param name="history">login history instance</param> /// <param name="userID">user ID</param> /// <param name="lastLoginDate">last login date</param> /// <param name="lattitude">lattitude value</param> /// <param name="longitude"> longitude value</param> /// <param name="isLogin">is successfull login</param> private void UpdateUserLoginHistory(LoginAttemptHistory history, long userID, DateTime?lastLoginDate, string lattitude, string longitude, bool isLogin) { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { if (history == null) { history = new LoginAttemptHistory(); } history.UserID = userID; history.Lattitude = lattitude; history.Longitude = longitude; history.LoginDate = System.DateTime.Now; history.LastLoginDate = isLogin ? System.DateTime.Now : history.LastLoginDate; history.FailedAttempt = isLogin ? 0 : history.FailedAttempt + 1; if (history.LoginAttemptID == 0) { SmartDostDbContext.LoginAttemptHistories.Add(history); } else { SmartDostDbContext.Entry <LoginAttemptHistory>(history).State = System.Data.EntityState.Modified; } SmartDostDbContext.SaveChanges(); if (history.FailedAttempt >= 3) { UserMaster userDetail = SmartDostDbContext.UserMasters.FirstOrDefault(k => k.UserID == userID); if (userDetail != null) { userDetail.AccountStatus = (int)AspectEnums.UserLoginStatus.Locked; userDetail.ModifiedDate = System.DateTime.Now; SmartDostDbContext.Entry <UserMaster>(userDetail).State = System.Data.EntityState.Modified; SmartDostDbContext.SaveChanges(); } } scope.Complete(); } }
/// <summary> /// Method to logout web user from the application /// </summary> /// <param name="userID">The user identifier.</param> /// <returns></returns> public bool LogoutWebUser(long userID, string sessionID) { bool isSuccess = false; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { DailyLoginHistory dailyLoginHistory = SmartDostDbContext.DailyLoginHistories.FirstOrDefault(k => k.UserID == userID && k.SessionID == sessionID && k.IsLogin == true); if (dailyLoginHistory != null) { dailyLoginHistory.IsLogin = false; dailyLoginHistory.LogOutTime = System.DateTime.Now; SmartDostDbContext.Entry <DailyLoginHistory>(dailyLoginHistory).State = System.Data.EntityState.Modified; isSuccess = SmartDostDbContext.SaveChanges() > 0 ? true : false; } scope.Complete(); } return(isSuccess); }
private bool InsertException(long currentUserId, bool isSuccess, List <UserSystemSetting> userSystemSettingsForUsers, UserSystemSetting userSystemSetting, long userID) { var systemSetting = SmartDostDbContext.UserSystemSettings.FirstOrDefault(x => x.UserID == userID && x.IsDeleted == false); if (systemSetting != null) { systemSetting.IsCoverageException = userSystemSetting.IsCoverageException; systemSetting.CoverageExceptionWindow = userSystemSetting.CoverageExceptionWindow; systemSetting.ModifiedDate = System.DateTime.Now; systemSetting.ModifiedBy = currentUserId; systemSetting.UserID = userID; SmartDostDbContext.Entry <UserSystemSetting>(systemSetting).State = System.Data.EntityState.Modified; } else { userSystemSetting.UserID = userID; userSystemSetting.CreatedDate = DateTime.Now; userSystemSetting.CreatedBy = currentUserId; SmartDostDbContext.UserSystemSettings.Add(userSystemSetting); } isSuccess = SmartDostDbContext.SaveChanges() > 0 ? true : false; return(isSuccess); }
/// <summary> /// Method to override user saved beats for the month /// </summary> /// <param name="userCoveragePlanCollection">user coverage plan collection</param> /// <returns>returns status</returns> private int SaveExceptionUserBeats(List <CoveragePlan> userCoveragePlanCollection) { DateTime currentDateTime = DateTime.Now; int status = 1; long currentUserId = userCoveragePlanCollection[0].UserID; var xmlfromLINQ = new XElement("CoveragePlans", from c in userCoveragePlanCollection select new XElement("CoveragePlan", new XElement("StoreID", c.StoreID), new XElement("CoverageDate", c.CoverageDate), new XElement("IsCoverage", c.IsCoverage), new XElement("StatusID", c.StatusID), new XElement("Remarks", c.Remarks) )); SmartDostDbContext.SPSaveExceptionUserBeats(xmlfromLINQ.ToString(), (string)userCoveragePlanCollection[0].MarketOffDays, (int)currentUserId); return(status); // using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, //new TransactionOptions //{ // IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted //})) // { // int month = userCoveragePlanCollection[0].CoverageDate.Month; // int year = userCoveragePlanCollection[0].CoverageDate.Year; // DateTime dtNow = DateTime.Now.Date.AddDays(1); // #region Earlier Market Off Delete as suggested by client on 13-Feb-2014 by Dhiraj // //List<UserLeavePlan> earlierMarketOff = SmartDostDbContext.UserLeavePlans.Where(k => k.LeaveDate.Month == month && k.UserID == currentUserId && k.LeaveDate.Year == year && k.LeaveTypeID == 2).ToList(); // //Added date check to remove leave greater than equal to current date // List<UserLeavePlan> earlierMarketOff = SmartDostDbContext.UserLeavePlans.Where(k => k.LeaveDate.Month == month && k.UserID == currentUserId && k.LeaveDate.Year == year && k.LeaveTypeID == 2 && k.LeaveDate >= dtNow).ToList(); // foreach (var item in earlierMarketOff) // { // SmartDostDbContext.UserLeavePlans.Remove(item); // } // SmartDostDbContext.SaveChanges(); // #endregion // //List<CoveragePlan> earlierPlans = SmartDostDbContext.CoveragePlans.Where(k => k.CoverageDate.Month == month && k.UserID == currentUserId && k.CoverageDate.Year == year).ToList(); // //Added date check to oreride beat plan greater than equal to current date // List<CoveragePlan> earlierPlans = SmartDostDbContext.CoveragePlans.Where(k => k.CoverageDate.Month == month && k.UserID == currentUserId && k.CoverageDate.Year == year && k.CoverageDate >= dtNow).ToList(); // if (earlierPlans != null) // { // foreach (var item in earlierPlans) // { // //if (item.StatusID == 1) // //{ // item.StatusID = 2; // item.Remarks = "Beat overriden by user"; // item.ModifiedDate = currentDateTime; // item.ModifiedBy = Convert.ToInt32(currentUserId); // SmartDostDbContext.Entry<CoveragePlan>(item).State = System.Data.EntityState.Modified; // } // } // if (!String.IsNullOrEmpty(userCoveragePlanCollection[0].MarketOffDays)) // { // string marketOffDays = userCoveragePlanCollection[0].MarketOffDays; // string[] marketArray = marketOffDays.Split(','); // if (marketArray.Length > 0) // { // foreach (string day in marketArray) // { // UserLeavePlan leavePlan = new UserLeavePlan() // { // LeaveToDate = new DateTime(userCoveragePlanCollection[0].CoverageDate.Year, userCoveragePlanCollection[0].CoverageDate.Month, Convert.ToInt32(day)), // UserID = userCoveragePlanCollection[0].UserID, // CreatedDate = currentDateTime, // CreatedBy = userCoveragePlanCollection[0].UserID, // IsDeleted = false, // LeaveDate = new DateTime(userCoveragePlanCollection[0].CoverageDate.Year, userCoveragePlanCollection[0].CoverageDate.Month, Convert.ToInt32(day)), // LeaveTypeID = 2, // Remarks = "Market Off Day", // }; // if (SmartDostDbContext.UserLeavePlans.FirstOrDefault(k => k.UserID == leavePlan.UserID && k.LeaveDate == leavePlan.LeaveDate) == null) // { // SmartDostDbContext.UserLeavePlans.Add(leavePlan); // } // } // } // } // foreach (CoveragePlan plan in userCoveragePlanCollection) // { // //var coverage = SmartDostDbContext.CoveragePlans.FirstOrDefault(k => EntityFunctions.TruncateTime(k.CoverageDate) == EntityFunctions.TruncateTime(plan.CoverageDate) && k.UserID == plan.UserID && k.StoreID == plan.StoreID && k.StatusID == 2); // //if (coverage == null) // //{ // SmartDostDbContext.CoveragePlans.Add(new CoveragePlan() // { // CompanyID = plan.CompanyID, // UserID = plan.UserID, // StoreID = plan.StoreID, // CoverageDate = plan.CoverageDate.Date, // IsCoverage = plan.IsCoverage, // StatusID = 0, // Remarks = plan.Remarks, // CreatedDate = currentDateTime, // CreatedBy = plan.CreatedBy, // }); // } // // } // SmartDostDbContext.SaveChanges(); // scope.Complete(); // status = 1; // } }
/// <summary> /// Method to fetch approved user beat details /// </summary> /// <param name="userID">user ID</param> /// <returns>returns beat details</returns> public UserBeatDetailsDTO GetApprovedUserBeatDetails(long userID) { // IList<UserBeatDetailDTO> finalList = new List<UserBeatDetailDTO>(); //UserBeatDetailsDTO beatDetail = new UserBeatDetailsDTO(); //var itmsLst = SmartDostDbContext.SPUserBeatDetails(userID,(int)AspectEnums.BeatStatus.Approved).ToList(); ////var itmsLst = SmartDostDbContext.vwUserBeatDetailsApproves.Where(k => k.UserID == userID && k.StatusID == 1).ToList(); //var coveragePlanCount = itmsLst.Count(); //#region Split BY Date //foreach (var item in itmsLst) //{ // List<string> dateRange = new List<string>(); // dateRange = item.DateRange.Split(',').ToList(); // foreach (var item1 in dateRange) // { // UserBeatDetailDTO btDetail = new UserBeatDetailDTO(); // btDetail.City = item.City; // btDetail.DateRange = item1.Trim(); // btDetail.PlanMonth = item.PlanMonth; // btDetail.StatusID = item.StatusID; // btDetail.StoreCode = item.StoreCode; // btDetail.StoreID = item.StoreID; // btDetail.StoreName = item.StoreName; // btDetail.UserID = item.UserID; // finalList.Add(btDetail); // } //} //finalList = finalList.OrderBy(x => Convert.ToInt16(x.DateRange)).ToList(); //#endregion //#region Count working Days //var query = from p in finalList // group p by p.DateRange into groups // select groups; //var workingDays = query.Count(); //#endregion //if (finalList.Count() > 0) //{ // #region Count Leave Off // var curDate = DateTime.ParseExact(finalList[0].DateRange + " " + finalList[0].PlanMonth, "d MMM yyyy", null); // int currentMonth = curDate.Month; //Convert.ToInt32(curDate.Month); // int currentYear = curDate.Year; // DateTime dtFrom = new DateTime(currentYear, currentMonth, 1); // DateTime dtTo = new DateTime(currentYear, currentMonth, DateTime.DaysInMonth(currentYear, currentMonth)); // var leaves = SmartDostDbContext.UserLeavePlans.Where(x => x.UserID == userID && x.LeaveTypeID == 2 && EntityFunctions.TruncateTime(x.LeaveToDate) >= EntityFunctions.TruncateTime(dtFrom) && EntityFunctions.TruncateTime(x.LeaveToDate) <= EntityFunctions.TruncateTime(dtTo)).ToList(); // var leaveOff = leaves.Count(); // string leaveDetails = string.Empty; // if (leaveOff > 0) // { // leaves = leaves.OrderBy(x=>x.LeaveToDate).ToList(); // foreach (var l in leaves) // { // leaveDetails += l.LeaveToDate.ToString("dd MMM") + " " + l.LeaveToDate.DayOfWeek + ", "; // } // leaveDetails = leaveDetails.TrimEnd().TrimEnd(','); // } // #endregion // beatDetail.UserBeatDetails = finalList; // beatDetail.TotalWorkingDays = workingDays.ToString(); // beatDetail.TotalOutletPlanned = itmsLst.Count() != 0 ? itmsLst.Count().ToString() : "0"; // beatDetail.TotalOff = leaveOff.ToString(); // beatDetail.LeaveDetail = leaveDetails; // beatDetail.TotalAssignedOutlet = SmartDostDbContext.vwStoreUsers.Where(X => X.UserID == userID && !X.IsDeleted).Select(x => x.StoreCode).Distinct().Count(); // foreach (var item in finalList) // { // var thisDate = DateTime.ParseExact(item.DateRange.Trim() + " " + item.PlanMonth, "d MMM yyyy", null); // item.Day = thisDate.DayOfWeek.ToString(); // } //} //beatDetail.UserBeatDetails = beatDetail.UserBeatDetails.OrderBy(x => x.PlanMonth).ToList(); IList <UserBeatDetailDTO> finalList = new List <UserBeatDetailDTO>(); UserBeatDetailsDTO beatDetail = new UserBeatDetailsDTO(); //var itmsLst = SmartDostDbContext.vwUserBeatDetails.Where(k => k.UserID == userID).ToList(); var itmsLst = SmartDostDbContext.SPUserBeatDetails(userID, (int)AspectEnums.BeatStatus.Approved).ToList(); var coveragePlanCount = itmsLst.Count(); var groupdedData = itmsLst.GroupBy(x => x.CoverageDate); var currentDate = groupdedData.OrderByDescending(x => x.Key).FirstOrDefault(); foreach (var item in groupdedData) { UserBeatDetailDTO beat = new UserBeatDetailDTO(); beat.CoverageDate = item.Key.ToString("dd MMM yyyy (dddd)"); List <UserBeatStoreDetailDTO> storeData = new List <UserBeatStoreDetailDTO>(); foreach (var subItem in item) { UserBeatStoreDetailDTO store = new UserBeatStoreDetailDTO(); store.City = subItem.City; store.StoreCode = subItem.StoreCode; store.StoreName = subItem.StoreName; store.StoreID = subItem.StoreID; storeData.Add(store); } beat.StoreData = storeData; //Dhiraj Tesintg finalList.Add(beat); } //#region Split BY Date //foreach (var item in itmsLst) //{ // List<string> dateRange = new List<string>(); // //dateRange = item.DateRange.Split(',').ToList(); // //foreach (var item1 in dateRange) // //{ // // UserBeatDetailDTO btDetail = new UserBeatDetailDTO(); // // btDetail.City = item.City; // // btDetail.DateRange = item1.Trim(); // // btDetail.PlanMonth = item.PlanMonth; // // btDetail.StatusID = item.StatusID; // // btDetail.StoreCode = item.StoreCode; // // btDetail.StoreID = item.StoreID; // // btDetail.StoreName = item.StoreName; // // btDetail.UserID = item.UserID; // // finalList.Add(btDetail); // //} //} //finalList = finalList.OrderBy(x => Convert.ToInt16(x.DateRange)).ToList(); //#endregion //#region Count working Days //var query = from p in finalList // group p by p.DateRange into groups // select groups; //var workingDays = query.Count(); //#endregion if (finalList.Count() > 0) { #region Count Leave Off var curDate = currentDate.Key; //DateTime.ParseExact(finalList[0].DateRange + " " + finalList[0].PlanMonth, "d MMM yyyy", null); int currentMonth = curDate.Month; //Convert.ToInt32(curDate.Month); int currentYear = curDate.Year; DateTime dtFrom = new DateTime(currentYear, currentMonth, 1); DateTime dtTo = new DateTime(currentYear, currentMonth, DateTime.DaysInMonth(currentYear, currentMonth)); var leaves = SmartDostDbContext.UserLeavePlans.Where(x => x.UserID == userID && x.LeaveTypeID == 2 && EntityFunctions.TruncateTime(x.LeaveToDate) >= EntityFunctions.TruncateTime(dtFrom) && EntityFunctions.TruncateTime(x.LeaveToDate) <= EntityFunctions.TruncateTime(dtTo)).ToList(); var leaveOff = leaves.Count(); string leaveDetails = string.Empty; if (leaveOff > 0) { leaves = leaves.OrderBy(x => x.LeaveToDate).ToList(); foreach (var l in leaves) { leaveDetails += l.LeaveToDate.ToString("dd MMM") + " " + l.LeaveToDate.DayOfWeek + ", "; } leaveDetails = leaveDetails.TrimEnd().TrimEnd(','); } #endregion beatDetail.UserBeatDetails = finalList; beatDetail.TotalWorkingDays = finalList.Count().ToString(); beatDetail.TotalOutletPlanned = itmsLst.Count() != 0 ? itmsLst.Count().ToString() : "0"; beatDetail.TotalOff = leaveOff.ToString(); beatDetail.LeaveDetail = leaveDetails; beatDetail.TotalAssignedOutlet = SmartDostDbContext.vwStoreUsers.Where(X => X.UserID == userID && !X.IsDeleted).Select(x => x.StoreCode).Distinct().Count(); } return(beatDetail); }