public IEnumerable <TimeSheetJson> GetTimeSheetsByUserIdForFirstTime(Guid userID) { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); ProjectManager projectManager = new Domain.ProjectManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); User currentUser = new UserHelper().GetCurrent(); User user = userManager.GetByID(userID); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currentUser); DateTime fromDate = DateTime.Now.AddDays(-7); DateTime toDate = DateTime.Now; if (displayPeriod.IsWeekly) { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } else { toDate = fromDate.AddDays(displayPeriod.NumOfDays); } IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(user, fromDate, toDate); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(user, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); return(result); }
public IEnumerable <TimeSheetJson> GetCurrentPeriodConfirm(List <TimeSheetValueJson> workHourJsons) { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); //SyncWithPWA(uow); User currUser = new UserHelper().GetCurrent(); User user = userManager.GetByID(Guid.Parse(workHourJsons[0].UserId)); DateTime fromDate = workHourJsons[0].Date; DateTime toDate = workHourJsons[workHourJsons.Count() - 1].Date;; IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); return(result); }
public IEnumerable <WorkHourOnProjecstJson> GetThisPeriodProjectsByUserId(GetThisMonthDataByUserJson json) { List <WorkHourOnProjecstJson> result = new List <WorkHourOnProjecstJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); User currUser = userManager.GetByID(Guid.Parse(json.userid)); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); DateTime fromDate = json.values[0].Date; DateTime toDate = json.values[json.values.Count() - 1].Date; var all = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); foreach (var item in all.GroupBy(x => x.ProjectId).Select(y => y.FirstOrDefault()).ToList()) { var addItem = new WorkHourOnProjecstJson(); addItem.ProjectId = item.ProjectId; addItem.Title = item.Project.Title; var hour = all.Where(a => a.ProjectId == item.ProjectId).Sum(d => d.Hours); addItem.Hour = DateUtility.ConvertToTimeSpan(hour); result.Add(addItem); } return(result); }
public static DisplayPeriod ConvertPeriodNumberDateJsonToDisplayPeriod(PeriodNumberDateJson json, IUnitOfWork uow, User currUser) { DisplayPeriodManager dpm = new DisplayPeriodManager(uow); UserManager userManager = new UserManager(uow); DisplayPeriod result = new DisplayPeriod(); result = dpm.GetDisplayPeriod(currUser); result.IsWeekly = json.IsWeekly; result.NumOfDays = json.Days; result.StartDate = DateUtility.GetMiladiDate(json.Date); return(result); }
public IEnumerable <TimeSheetJson> ChangeDisplayPeriodToWeekly() { UnitOfWork uow = new UnitOfWork(); UserManager um = new UserManager(uow); var currentUser = new UserHelper().GetCurrent(); DisplayPeriodManager dpm = new DisplayPeriodManager(uow); DisplayPeriod dp = new DisplayPeriod(); dp = dpm.GetDisplayPeriod(currentUser); dp.IsWeekly = true; dpm.Edit(dp); return(GetTimeSheets()); }
public IEnumerable <TimeSheetJson> GetPreviousPeriod(WorkHourJson workHourJson) { List <TimeSheetJson> result = new List <TimeSheetJson>(); if (workHourJson == null) { workHourJson = new WorkHourJson(); workHourJson.Date = DateTime.Now; } var startDate = workHourJson.Date; UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); ProjectManager projectManager = new Domain.ProjectManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); //SyncWithPWA(uow); User currUser = new UserHelper().GetCurrent(); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); var dt = startDate.AddDays(-1); DateTime fromDate = dt.AddDays(-displayPeriod.NumOfDays); DateTime toDate = dt; if (displayPeriod.IsWeekly) { fromDate = dt.StartOfWeek(DayOfWeek.Saturday); toDate = dt.EndOfWeek(DayOfWeek.Friday); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForRegister(presHours, workHours); } else { IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); if (presHours.Count() < displayPeriod.NumOfDays) { fromDate = timeSheetManager.GetFirstPresenceHour().Date; toDate = fromDate.AddDays(displayPeriod.NumOfDays); presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); } result = TimeSheetAssembler.ToJsonsForRegister(presHours, workHours); } return(result); }
public AllEntityJson GetThisPeriodData(List <TimeSheetValueJson> workHourJsons) { UnitOfWork uow = new UnitOfWork(); User currUser = new UserHelper().GetCurrent(); TimeSheetManager timesheetManager = new Domain.TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); DateTime fromDate = workHourJsons[0].Date; DateTime toDate = workHourJsons[workHourJsons.Count() - 1].Date; var presenceours = timesheetManager.GetThisPeriodPresencHoursByUserId(currUser.ID, fromDate, toDate); var workours = timesheetManager.GetThisPeriodhworkHoursByUserId(currUser.ID, fromDate, toDate); return(new HomeEntityAssembler().ToJson(presenceours, workours)); }
public async Task <IActionResult> GetPreviousPeriodConfirm(string ver, string type, Guid?userId, DateTime date) { UserManager userManager = new UserManager(this._uow); TimeSheetManager timeSheetManager = new TimeSheetManager(this._uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(this._uow); //SyncWithPWA(uow); User currUser = new UserHelper().GetCurrent(this._uow, this.UserName); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); DateTime fromDate; DateTime toDate; DateTime dt; if (type == "previous") { dt = date.AddDays(-1); fromDate = dt.AddDays(-displayPeriod.NumOfDays); toDate = dt; } else { dt = date.AddDays(1); fromDate = dt; toDate = dt.AddDays(displayPeriod.NumOfDays); } if (displayPeriod.IsWeekly) { fromDate = dt.StartOfWeek(DayOfWeek.Saturday); toDate = dt.EndOfWeek(DayOfWeek.Friday); } else { IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); if (presHours.Count() < displayPeriod.NumOfDays) { fromDate = timeSheetManager.GetFirstPresenceHour().Date; toDate = fromDate.AddDays(displayPeriod.NumOfDays); } } return(await GetTimeSheet(ver, userId, fromDate, toDate)); }
public AllEntityJson GetThisPeriodDataByUserId(GetThisMonthDataByUserJson json) { UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); User currUser = userManager.GetByID(Guid.Parse(json.userid)); TimeSheetManager timesheetManager = new Domain.TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); DateTime fromDate = json.values[0].Date; DateTime toDate = json.values[json.values.Count() - 1].Date; var presenceours = timesheetManager.GetThisPeriodPresencHoursByUserId(currUser.ID, fromDate, toDate); var workours = timesheetManager.GetThisPeriodhworkHoursByUserId(currUser.ID, fromDate, toDate); return(new HomeEntityAssembler().ToJson(presenceours, workours)); }
public IActionResult ChangeDisplayPeriodToDaily(PeriodNumberDateJson period) { try { var currentUser = new UserHelper().GetCurrent(this._uow, this.UserName); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(this._uow); var displayPeriod = DisplayPeriodUtilities.ConvertPeriodNumberDateJsonToDisplayPeriod(period, this._uow, currentUser); //SyncWithPWA(uow); displayPeriodMnager.Save(displayPeriod); return(Ok(true)); } catch (Exception ex) { return(this.ReturnError(ex, "خطا در تغییر به روزانه")); } }
public IActionResult ChangeDisplayPeriodToWeeklyConfirm() { try { var currentUser = new UserHelper().GetCurrent(this._uow, this.UserName); DisplayPeriodManager dpm = new DisplayPeriodManager(this._uow); DisplayPeriod dp = new DisplayPeriod(); dp = dpm.GetDisplayPeriod(currentUser); dp.IsWeekly = true; dpm.Edit(dp); return(Ok(true)); } catch (Exception ex) { return(this.ReturnError(ex, "خطا در تغییر به هفتگی")); } }
public IEnumerable <TimeSheetJson> ChangeDisplayPeriodToWeeklyConfirm(Guid UserId) { UnitOfWork uow = new UnitOfWork(); UserManager um = new UserManager(uow); var user = um.GetByID(UserId); var currentUser = new UserHelper().GetCurrent(); DisplayPeriodManager dpm = new DisplayPeriodManager(uow); DisplayPeriod dp = new DisplayPeriod(); dp = dpm.GetDisplayPeriod(currentUser); dp.IsWeekly = true; dpm.Edit(dp); var inputArg = new GetThisMonthDataByUserJson(); inputArg.userid = user.ID.ToString(); return(GetTimeSheetsByUserId(inputArg)); }
public IEnumerable <TimeSheetJson> GetTimeSheetsByUserId(GetThisMonthDataByUserJson json) { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); ProjectManager projectManager = new Domain.ProjectManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); User currentUser = new UserHelper().GetCurrent(); User user = userManager.GetByID(Guid.Parse(json.userid.ToString())); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currentUser); DateTime fromDate = DateTime.Now.AddDays(-7); DateTime toDate; if (json.values != null) { if (json.values.Count > 0) { fromDate = json.values[0].Date; toDate = json.values[json.values.Count() - 1].Date; } } if (displayPeriod.IsWeekly) { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } else { toDate = fromDate.AddDays(displayPeriod.NumOfDays); } IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(user, fromDate, toDate); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(user, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); return(result); }
public IEnumerable <TimeSheetJson> GetTimeSheetsByDateAndNumberOfDay(PeriodNumberDateJson period) { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); ProjectManager projectManager = new Domain.ProjectManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); var displayPeriod = DisplayPeriodUtilities.ConvertPeriodNumberDateJsonToDisplayPeriod(period); //SyncWithPWA(uow); User currUser = new UserHelper().GetCurrent(); displayPeriodMnager.Save(displayPeriod); DateTime fromDate = displayPeriod.StartDate; DateTime toDate = fromDate.AddDays(displayPeriod.NumOfDays); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForRegister(presHours, workHours); return(result); }
public IEnumerable <TimeSheetJson> GetTimeSheets() { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); ProjectManager projectManager = new Domain.ProjectManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); User currUser = new UserHelper().GetCurrent(); DateTime fromDate; DateTime toDate = DateTime.MaxValue; DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); if (displayPeriod != null) { fromDate = displayPeriod.StartDate; if (displayPeriod.IsWeekly) { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } else { toDate = fromDate.AddDays(displayPeriod.NumOfDays); } } else { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForRegister(presHours, workHours); return(result); }
public async Task <IActionResult> GetTimeSheet(string ver, Guid?userId, DateTime?fromDate, DateTime?toDate) { var isWantingApprove = userId.HasValue; try { if (!this.MainChecks(ver, out string error)) { throw new Exception(error); } DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(this._uow); User currentUser = new UserHelper().GetCurrent(this._uow, this.UserName); if (!fromDate.HasValue) { DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currentUser); if (!fromDate.HasValue) { fromDate = DateTime.Now.AddDays(-7); } if (!toDate.HasValue) { toDate = DateTime.Now; } if (displayPeriod.IsWeekly) { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } else { toDate = fromDate.Value.AddDays(displayPeriod.NumOfDays); } } var mustCheckDefaultTimeSheetPolocy = false; var now = DateTime.Now; mustCheckDefaultTimeSheetPolocy = now.Date >= fromDate.Value.Date && now.Date <= toDate.Value.Date; //سعی شده پالیسی فقط دفعه اول چک شود و وقتی عقب جلو می رویم چک نشود چون همان است var numberOfReset = -1; labelForReset: numberOfReset++; IQueryable <Persistance.QueryEntities.EmployeeTimeSheetFromDB> query = null; if (isWantingApprove) { query = this.DBContext.spFoundConfirmTimeSheet.FromSqlInterpolated(this.DBContext.spFoundConfirmTimeSheet_str( currentUser.ID, userId, fromDate.Value, toDate.Value )); } else { query = this.DBContext.spFoundConfirmTimeSheet.FromSqlInterpolated(this.DBContext.spFoundEmployeeTimeSheet_str( currentUser.ID, fromDate.Value, toDate.Value )); } var items = await query.ToListAsync(); var days = new string[] { "شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه" }; var answer = items.GroupBy(g => g.Date) .Select(gg => new vmGetTimeSheetResualt { date = gg.Key.Value, isOpen = gg.FirstOrDefault().IsOpen, mustHaveHozoor = gg.First().UserMustHasHozoor, dayTimeString = gg.FirstOrDefault().DayTimeString, date_persian = gg.First().PersianDate, day_persian = days[gg.First().DayOfWeek.Value], hozoor = gg.First().Hozoor, projects = gg.Where(p => p.Type == "Work" && p.ProjectId.HasValue) .GroupBy(p => p.ProjectId).Select(pp => new vmGetTimeSheetResualt_Project { id = pp.Key, title = pp.First().ProjectTitle, workouts = pp.Where(w => w.TaskId.HasValue) .GroupBy(w => new { w.TaskId, w.State }).Select(ww => new vmGetTimeSheetResualt_Workout { id = ww.Key.TaskId, state = ww.Key.State, title = ww.First().Title, minutes = ww.First().Minutes }).ToList() }).ToList(), others = gg.Where(p => p.Type == "Other" && p.ProjectId.HasValue) .GroupBy(p => p.State).Select(pp => new vmGetTimeSheetResualt_Project { id = pp.First().ProjectId, title = pp.Key, workouts = pp.Where(w => w.TaskId.HasValue) .GroupBy(w => w.TaskId).Select(ww => new vmGetTimeSheetResualt_Workout { id = ww.First().TaskId, state = ww.First().State, title = ww.First().Title, minutes = ww.Sum(www => www.Minutes) }).ToList() }).ToList() }).ToList(); if (mustCheckDefaultTimeSheetPolocy && !answer.First(a => a.date.Value.Date == now.Date).isOpen.HasValue) { createPolicyForUser(currentUser.ID); if (numberOfReset < 1) { goto labelForReset; } } return(Ok(answer)); } catch (Exception ex) { return(this.ReturnError(ex, "خطا در دریافت اطلاعات تایم شیت")); } }
public async Task <IActionResult> GetTimeSheet(string ver, Guid?userId, DateTime?fromDate, DateTime?toDate) { var isWantingApprove = userId.HasValue; try { if (!this.MainChecks(ver, out string error)) { throw new Exception(error); } DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(this._uow); User currentUser = new UserHelper().GetCurrent(this._uow, this.UserName); if (!fromDate.HasValue) { DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currentUser); if (!fromDate.HasValue) { fromDate = DateTime.Now.AddDays(-7); } if (!toDate.HasValue) { toDate = DateTime.Now; } if (displayPeriod.IsWeekly) { fromDate = DateTime.Today.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Today.EndOfWeek(DayOfWeek.Friday); } else { toDate = fromDate.Value.AddDays(displayPeriod.NumOfDays); } } var mustCheckDefaultTimeSheetPolocy = false; var now = DateTime.Now; mustCheckDefaultTimeSheetPolocy = now >= fromDate && now <= toDate; var numberOfReset = -1; labelForReset: numberOfReset++; IQueryable <Persistance.QueryEntities.EmployeeTimeSheetFromDB> query = null; if (isWantingApprove) { query = this.DBContext.spFoundConfirmTimeSheet.FromSqlInterpolated(this.DBContext.spFoundConfirmTimeSheet_str( currentUser.ID, userId, fromDate.Value, toDate.Value )); } else { query = this.DBContext.spFoundConfirmTimeSheet.FromSqlInterpolated(this.DBContext.spFoundEmployeeTimeSheet_str( currentUser.ID, fromDate.Value, toDate.Value )); } var items = await query.ToListAsync(); var days = new string[] { "شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه" }; var answer = items.GroupBy(g => g.Date) .Select(gg => new vmGetTimeSheetResualt { date = gg.Key.Value, isOpen = gg.FirstOrDefault().IsOpen, mustHaveHozoor = gg.First().UserMustHasHozoor, dayTimeString = gg.FirstOrDefault().DayTimeString, date_persian = gg.First().PersianDate, day_persian = days[gg.First().DayOfWeek.Value], hozoor = gg.First().Hozoor, projects = gg.Where(p => p.Type == "Work" && p.ProjectId.HasValue) .GroupBy(p => p.ProjectId).Select(pp => new vmGetTimeSheetResualt_Project { id = pp.Key, title = pp.First().ProjectTitle, workouts = pp.Where(w => w.TaskId.HasValue) .GroupBy(w => new { w.TaskId, w.State }).Select(ww => new vmGetTimeSheetResualt_Workout { id = ww.Key.TaskId, state = ww.Key.State, title = ww.First().Title, minutes = ww.First().Minutes }).ToList() }).ToList(), others = gg.Where(p => p.Type == "Other" && p.ProjectId.HasValue) .GroupBy(p => p.State).Select(pp => new vmGetTimeSheetResualt_Project { id = pp.First().ProjectId, title = pp.Key, workouts = pp.Where(w => w.TaskId.HasValue) .GroupBy(w => w.TaskId).Select(ww => new vmGetTimeSheetResualt_Workout { id = ww.First().TaskId, state = ww.First().State, title = ww.First().Title, minutes = ww.Sum(www => www.Minutes) }).ToList() }).ToList() }).ToList(); if (mustCheckDefaultTimeSheetPolocy && !answer.First(a => a.date.Value.Date == now.Date).isOpen.HasValue) { //default policy must check maybe is deactivated //if isnot created, must create and today is open beacuase friday is checked in query //اگر زمانش گذشته باید تمدید بشه که با تاریخ های امروز یکسان بشه var userDefaultPolicy = this.DBContext.TimesheetPolicies.FirstOrDefault(p => p.IsDefault && p.UserId == currentUser.ID); if (userDefaultPolicy == null) { userDefaultPolicy = new TimesheetPolicy() { Id = Guid.NewGuid(), IsDefault = true, isDeactivated = false, IsOpen = true, UserMustHasHozoor = true, UserId = currentUser.ID, }; this.DBContext.TimesheetPolicies.Add(userDefaultPolicy); } userDefaultPolicy.Start = DateUtility.GetCompanyStartDate(); userDefaultPolicy.Finish = DateUtility.GetCompanyEndDate(); userDefaultPolicy.Validity = DateUtility.GetCompanyEndDate(); userDefaultPolicy.CreateDate = DateTime.Now; this.DBContext.SaveChanges(); if (numberOfReset < 1) { goto labelForReset; } } return(Ok(answer)); } catch (Exception ex) { return(this.ReturnError(ex, "خطا در دریافت اطلاعات تایم شیت")); } }
public IEnumerable <TimeSheetJson> GetNextPeriodConfirm(TimeSheetValueJson workHourJson) { List <TimeSheetJson> result = new List <TimeSheetJson>(); if (workHourJson == null) { workHourJson = new TimeSheetValueJson(); workHourJson.Date = DateTime.Now.AddDays(-7); } UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); DisplayPeriodManager displayPeriodMnager = new DisplayPeriodManager(uow); //SyncWithPWA(uow); User currUser = new UserHelper().GetCurrent(); User user = userManager.GetByID(Guid.Parse(workHourJson.UserId)); DisplayPeriod displayPeriod = displayPeriodMnager.GetDisplayPeriod(currUser); DateTime toDate = workHourJson.Date.AddDays(1); DateTime fromDate; var type = workHourJson.Value.GetType(); if (displayPeriod != null) { fromDate = displayPeriod.StartDate; if (displayPeriod.IsWeekly) { var Condition = workHourJson.Value.Equals(true) || workHourJson.Date.AddDays(7) < DateTime.Now; if (DateTime.Now > workHourJson.Date && Condition) { fromDate = toDate.StartOfWeek(DayOfWeek.Saturday); toDate = toDate.EndOfWeek(DayOfWeek.Friday); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); } else { fromDate = DateTime.Now.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Now.EndOfWeek(DayOfWeek.Friday); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); } } else { toDate = fromDate.AddDays(displayPeriod.NumOfDays); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); if (presHours.Count() < displayPeriod.NumOfDays) { fromDate = DateTime.Now; toDate = fromDate.AddDays(displayPeriod.NumOfDays); presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); } IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); } } else { fromDate = DateTime.Now.StartOfWeek(DayOfWeek.Saturday); toDate = DateTime.Now.EndOfWeek(DayOfWeek.Friday); IEnumerable <PresenceHour> presHours = timeSheetManager.GetPresHoursByUser(currUser, fromDate, toDate); IEnumerable <WorkHour> workHours = timeSheetManager.GetWorkHoursByUser(currUser, fromDate, toDate); result = TimeSheetAssembler.ToJsonsForConfirm(presHours, workHours, user); } return(result); }