public JsonResult GetTimeSheet() { TimeSheetManager timeSheetManager = new TimeSheetManager(); var result = timeSheetManager.GetTimeSheet(); return(Json(result, JsonRequestBehavior.AllowGet)); }
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 JsonResult UpdateTimeSheet(TimeSheet timeSheet) { TimeSheetManager timeSheetManager = new TimeSheetManager(); var result = timeSheetManager.Update(timeSheet); return(Json(result, JsonRequestBehavior.AllowGet)); }
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 List <string> SendWorkHours(WorkHourJson workHourJson)//JObject jsonObject { UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager WHM = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); Validations validate = new Validations(); var WorkHours = WHM.GetBydateAndUserId(workHourJson.Date, currUser.ID); List <string> result = new List <string>(); foreach (var wh in WorkHours.ToList()) { if (wh.WorkflowStage.IsFirst) { result = validate.ValidateRegisterWorkHour(wh); if (result.Count() > 0) { return(result); } WHM.SendWorkHour(wh); HistoryUtilities.RegisterSendHistory(wh); result.Add("عملیات ارسال کارکرد ها با موفقیت انجام گردید"); } } return(result); }
public List <string> SaveWorkHours(WorkHourJson workHourJson) { List <string> result = new List <string>(); try { UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TaskManager taskManager = new TaskManager(uow); ProjectManager prjManager = new ProjectManager(uow); TimeSheetManager tsManager = new TimeSheetManager(uow); Validations validate = new Validations(); User currUser = new UserHelper().GetCurrent(); WorkHour workHour = workHourJson.ToWorkHour(); workHour.Task = taskManager.GetByID(workHour.TaskID); workHour.TaskID = workHour.Task.ID; workHour.Project = prjManager.GetByID(workHourJson.ProjectID); workHour.ProjectId = workHour.Project.ID; workHour.EmployeeID = currUser.ID; workHour.Employee = userManager.GetByID(currUser.ID); workHour.WorkflowStage = new WorkflowManager(uow).FirstStage(); workHour.WorkflowStageID = workHour.WorkflowStage.ID; workHour.Description = workHourJson.Description; tsManager.SaveWorkHour(workHour); HistoryUtilities.RegisterSaveHistory(workHour); } catch (ValidationException ex) { result = ex.Errors; } return(result); }
public string ApproveWorkHour(ApproveAndDenyJson data) { IEnumerable <WorkHour> result; UnitOfWork uow = new UnitOfWork(); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); result = timeSheetManager.GetByDateAndTaskId(data.date, Guid.Parse(data.id)).ToList(); foreach (var item in result) { if (timeSheetManager.IsUserOrganisationMnager(item, User.Identity.Name) && timeSheetManager.IsUserProjectMnager(item, User.Identity.Name) && item.WorkflowStage.Order == 2) { for (int i = 0; i < 2; i++) { timeSheetManager.ApproveWorkHour(item); HistoryUtilities.RegisterApproveHistory(data, item); } } else { timeSheetManager.ApproveWorkHour(item); HistoryUtilities.RegisterApproveHistory(data, item); } } return("عملیات تایید با موفقیت انجام گردید"); }
public JsonResult DeleteTimeSheet(int Id) { TimeSheetManager timeSheetManager = new TimeSheetManager(); timeSheetManager.Delete(Id); return(Json(true, JsonRequestBehavior.AllowGet)); }
private void approveDenyDailyLeave(bool isApprove, Domain.User currentUser, TimeSheetManager timeSheetManager, DailyLeaveManager dlm, DailyLeave dailyLeave, string userDescription) { if (dailyLeave.WorkflowStage.Type == "Final") { throw new Exception("هم اکنون تایید نهایی می باشد"); } var isManager = timeSheetManager.IsUserOrganisationMnager(dailyLeave.UserID, currentUser); if (dailyLeave.WorkflowStage.Type == "Manager" && !isManager) { throw new Exception("آیتم منتظر تایید مدیر ستادی است"); } var data = new ApproveAndDenyJson() { id = dailyLeave.ID.ToString(), date = DateTime.Now, description = userDescription, workflowStageID = dailyLeave.WorkflowStageID }; if (isApprove) { dlm.Approve(dailyLeave); HistoryUtilities.RegisterApproveHistory(data, this._uow, currentUser); } else { dlm.Deny(dailyLeave); HistoryUtilities.RegisterApproveHistory(data, this._uow, currentUser); } }
private void approveDenyWorkhour(bool isApprove, Domain.User currentUser, TimeSheetManager timeSheetManager, WorkHour item, string userDescription) { if (item.WorkflowStage.Type == "Final") { throw new Exception("هم اکنون تایید نهایی می باشد"); } var data = new ApproveAndDenyJson() { id = item.ID.ToString(), date = DateTime.Now, description = userDescription }; var isManager = timeSheetManager.IsUserOrganisationMnager(item.EmployeeID, currentUser); var isProjectManager = timeSheetManager.IsUserProjectMnager(item, currentUser.UserName); if (isManager && isProjectManager) { if (isApprove) { for (int i = item.WorkflowStage.Order; i < 4; i++) { timeSheetManager.ApproveWorkHour(item); HistoryUtilities.RegisterApproveHistory(data, item, this._uow, currentUser); } } else { for (int i = item.WorkflowStage.Order; i > 1; i++) { timeSheetManager.DenyWorkHour(item); HistoryUtilities.RegisterDenyHistory(data, item, this._uow, currentUser); } } } else { if (item.WorkflowStage.Type == "Manager" && !isManager) { throw new Exception("آیتم منتظر تایید مدیر ستادی است"); } if (item.WorkflowStage.Type == "ProjectManager" && !isProjectManager) { throw new Exception("آیتم منتظر تایید مدیر پروژه است"); } if (isApprove) { timeSheetManager.ApproveWorkHour(item); HistoryUtilities.RegisterApproveHistory(data, item, this._uow, currentUser); } else { timeSheetManager.DenyWorkHour(item); HistoryUtilities.RegisterDenyHistory(data, item, this._uow, currentUser); } } }
public bool DeleteWorkHours(WorkHourJson workHourJson)//JObject jsonObject) { UnitOfWork uow = new UnitOfWork(); TimeSheetManager WHM = new TimeSheetManager(uow); WHM.DeleteWorkHour(workHourJson.ID); return(true); }
public IEnumerable <WorkHourJson> GetConfirmedWorkHours(WorkHourJson workHourJson)//JObject jsonObject) { UnitOfWork uow = new UnitOfWork(); TimeSheetManager WHM = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); return(new WorkHourAssembler().ToJsons(WHM.GetConfirmedWorkHours(workHourJson.Date, currUser.ID))); }
public PresenceHour GetPresenceHourByDate(WorkHourJson workHourJson)//JObject jsonObject) { UnitOfWork uow = new UnitOfWork(); TimeSheetManager WHM = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); return(WHM.GetPresenceHourByUserIdAndDate(currUser.ID, workHourJson.Date)); }
public IEnumerable <WorkHourJson> GetSentWorkHours() { var userName = User.Identity.Name; UnitOfWork uow = new UnitOfWork(); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); return(new WorkHourAssembler().ToJsons(timeSheetManager.GetSentWorkHours(userName).OrderBy(c => c.Date))); }
public IEnumerable <WorkHourJson> GetRegisteredWorkHours() { UnitOfWork uow = new UnitOfWork(); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); var currentUser = new UserHelper().GetCurrent(); return(new WorkHourAssembler().ToJsons(timeSheetManager.GetRegisteredWorkHours(currentUser.ID).OrderBy(c => c.Date))); }
public IEnumerable <WorkHourJson> GetWorkHoursByDate(WorkHourJson WorkHourJson) { var result = new List <WorkHourJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); result = new WorkHourAssembler().ToJsons(timeSheetManager.GetWorkHoursByUser(currUser, WorkHourJson.Date, WorkHourJson.Date)).ToList(); return(result); }
public IEnumerable <WorkHourJson> GetCurrentPeriodSentWorkHours(List <TimeSheetValueJson> workHourJsons) { UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); DateTime fromDate = workHourJsons[0].Date; DateTime toDate = workHourJsons[workHourJsons.Count() - 1].Date; return(new WorkHourAssembler().ToJsons(timeSheetManager.GetSentWorkHours(currUser.UserName).Where(x => x.Date >= fromDate && x.Date <= toDate).OrderBy(c => c.Date))); }
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 IEnumerable <TimeSheetJson> GetCurrentPeriod(List <TimeSheetValueJson> workHourJsons) { List <TimeSheetJson> result = new List <TimeSheetJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); 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.ToJsonsForRegister(presHours, workHours); return(result); }
public string DenyWorkHour(ApproveAndDenyJson data) { IEnumerable <WorkHour> result; UnitOfWork uow = new UnitOfWork(); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); result = timeSheetManager.GetByDateAndTaskId(data.date, Guid.Parse(data.id)).ToList(); foreach (var item in result) { timeSheetManager.DenyWorkHour(item); HistoryUtilities.RegisterDenyHistory(data, item); } return("عملیات رد با موفقیت انجام گردید"); }
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 IEnumerable <WorkHourOnProjecstJson> GetThisMonthProjectsByUserID(GetThisMonthDataByUserJson json) { List <WorkHourOnProjecstJson> result = new List <WorkHourOnProjecstJson>(); UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager timeSheetManager = new TimeSheetManager(uow); //SyncWithPWA(uow); User User = userManager.GetByID(Guid.Parse(json.userid)); var all = timeSheetManager.GetWorkHoursByUser(User.ID, json.value.Date); 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 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 List <string> SendWorkHour(WorkHourJson workHourJson)//JObject jsonObject { UnitOfWork uow = new UnitOfWork(); UserManager userManager = new UserManager(uow); TimeSheetManager WHM = new TimeSheetManager(uow); User currUser = new UserHelper().GetCurrent(); Validations validate = new Validations(); var WorkHour = WHM.GetByID(workHourJson.ID); List <string> result = new List <string>(); result = validate.ValidateRegisterWorkHour(WorkHour); if (result.Count() == 0) { if (WorkHour.WorkflowStage.IsFirst) { WHM.SendWorkHour(WorkHour); HistoryUtilities.RegisterSendHistory(WorkHour); result.Add("ارسال کارکرد با موفقیت انجام گردید"); } } return(result); }
public TimeSheetApplication() { mgr = new TimeSheetManager(ObjectFactory.GetInstance <IEmailSender>(), ObjectFactory.GetInstance <ICache <TimeSheetManager> >(), ObjectFactory.GetInstance <ITimeSheetRepository>()); }
public static List <TimeSheetJson> ToJsonsForConfirm(IEnumerable <PresenceHour> presenceHours, IEnumerable <WorkHour> workHours, User user) { UnitOfWork uow = new UnitOfWork(); TimeSheetManager timesheetMnager = new TimeSheetManager(uow); var result = new List <TimeSheetJson>(); int timeSheetID = 1; var groupingTasks = workHours.GroupBy(x => x.TaskID).Select(y => y.FirstOrDefault()).ToList(); var groupingProjects = workHours.GroupBy(x => x.ProjectId).Select(y => y.FirstOrDefault()).ToList(); List <WorkHour> approveItems = new List <WorkHour>(); List <WorkHour> notApproveItems = new List <WorkHour>(); foreach (var item in workHours) { if (timesheetMnager.ApprovementStatus(item, new UserHelper().GetCurrent().UserName) == "Approve") { approveItems.Add(item); } if (timesheetMnager.ApprovementStatus(item, new UserHelper().GetCurrent().UserName) == "NotApprove") { notApproveItems.Add(item); } } var groupingTasksApprove = approveItems.GroupBy(x => x.TaskID).Select(y => y.FirstOrDefault()).ToList(); var groupingProjectsApprove = approveItems.GroupBy(x => x.ProjectId).Select(y => y.FirstOrDefault()).ToList(); var groupingTasksNotApprove = notApproveItems.GroupBy(x => x.TaskID).Select(y => y.FirstOrDefault()).ToList(); var groupingProjectsNotApprove = notApproveItems.GroupBy(x => x.ProjectId).Select(y => y.FirstOrDefault()).ToList(); TimeSheetJson tsjPresHours = new TimeSheetJson(); tsjPresHours.UID = Guid.NewGuid(); tsjPresHours.id = timeSheetID++; tsjPresHours.parentId = null; tsjPresHours.Title = "حضور"; tsjPresHours.Values = new List <TimeSheetValueJson>(); List <TimeSheetJson> tsjWorkHours = new List <TimeSheetJson>(); var PrentWorkHour = new TimeSheetJson(); PrentWorkHour.UID = Guid.NewGuid(); PrentWorkHour.id = timeSheetID++; PrentWorkHour.parentId = null; PrentWorkHour.Title = "کارکرد"; PrentWorkHour.Values = new List <TimeSheetValueJson>(); tsjWorkHours.Add(PrentWorkHour); foreach (var item in groupingProjects) { var ProjectChild = new TimeSheetJson(); ProjectChild.Type = "Project"; var timesheetIdwork = timeSheetID; ProjectChild.UID = item.ProjectId; ProjectChild.id = timeSheetID++; ProjectChild.parentId = 2; ProjectChild.Title = item.Project.Title; ProjectChild.Values = new List <TimeSheetValueJson>(); tsjWorkHours.Add(ProjectChild); foreach (var w in groupingTasks) { if (item.ProjectId == w.ProjectId) { var TaskChilde = new TimeSheetJson(); TaskChilde.Type = "Task"; TaskChilde.UID = w.TaskID; TaskChilde.id = timeSheetID++; TaskChilde.parentId = timesheetIdwork; TaskChilde.Title = w.Task.Title; TaskChilde.Values = new List <TimeSheetValueJson>(); tsjWorkHours.Add(TaskChilde); } } } TimeSheetJson tsjDiffPH_WH = new TimeSheetJson(); tsjDiffPH_WH.UID = Guid.NewGuid(); tsjDiffPH_WH.id = timeSheetID++; tsjDiffPH_WH.parentId = null; tsjDiffPH_WH.Title = "اختلاف حضور و کارکرد"; tsjDiffPH_WH.Values = new List <TimeSheetValueJson>(); tsjDiffPH_WH.Type = "Defference"; List <TimeSheetJson> approveWHs = new List <TimeSheetJson>(); var approvechiled = new TimeSheetJson(); approvechiled.UID = Guid.NewGuid(); var timesheetIdapproveproject = timeSheetID; approvechiled.id = timeSheetID++; approvechiled.parentId = null; approvechiled.Title = "تایید شده"; approvechiled.Values = new List <TimeSheetValueJson>(); approvechiled.Type = "Approve"; approveWHs.Add(approvechiled); foreach (var projectApprove in groupingProjectsApprove) { var timesheetIdapproveaskt = timeSheetID; var counter = 0; foreach (var worktask in groupingTasksApprove) { if (timesheetMnager.ApprovementStatus(worktask, new UserHelper().GetCurrent().UserName) == "Approve" && projectApprove.ProjectId == worktask.ProjectId) { if (counter == 0) { var ProjectChildapprove = new TimeSheetJson(); ProjectChildapprove.Type = "ProjectApprove"; ProjectChildapprove.UID = projectApprove.ProjectId; ProjectChildapprove.id = timeSheetID++; ProjectChildapprove.parentId = timesheetIdapproveproject; ProjectChildapprove.Title = projectApprove.Project.Title; ProjectChildapprove.Values = new List <TimeSheetValueJson>(); approveWHs.Add(ProjectChildapprove); } counter++; var approveChildetask = new TimeSheetJson(); approveChildetask.Type = "TaskApprove"; approveChildetask.UID = worktask.TaskID; approveChildetask.id = timeSheetID++; approveChildetask.parentId = timesheetIdapproveaskt; approveChildetask.Title = worktask.Task.Title; approveChildetask.Values = new List <TimeSheetValueJson>(); approveWHs.Add(approveChildetask); } } } List <TimeSheetJson> notApproveWHs = new List <TimeSheetJson>(); var reject = new TimeSheetJson(); reject.UID = Guid.NewGuid(); var timesheetIdNotapproveproject = timeSheetID; reject.id = timeSheetID++; reject.parentId = null; reject.Title = "تایید نشده"; reject.Values = new List <TimeSheetValueJson>(); reject.Type = "Reject"; notApproveWHs.Add(reject); foreach (var item in groupingProjectsNotApprove) { var counter = 0; var timesheetIdapproveaskt = timeSheetID; foreach (var w in groupingTasksNotApprove) { if (timesheetMnager.ApprovementStatus(w, new UserHelper().GetCurrent().UserName) == "NotApprove" && item.ProjectId == w.ProjectId) { if (counter == 0) { var ProjectChildNotapprove = new TimeSheetJson(); ProjectChildNotapprove.Type = "ProjectNotApprove"; ProjectChildNotapprove.UID = item.ProjectId; ProjectChildNotapprove.id = timeSheetID++; ProjectChildNotapprove.parentId = timesheetIdNotapproveproject; ProjectChildNotapprove.Title = item.Project.Title; ProjectChildNotapprove.Values = new List <TimeSheetValueJson>(); notApproveWHs.Add(ProjectChildNotapprove); } counter++; var NotapproveChildetask = new TimeSheetJson(); NotapproveChildetask.Type = "TaskNotApprove"; NotapproveChildetask.UID = w.TaskID; NotapproveChildetask.id = timeSheetID++; NotapproveChildetask.parentId = timesheetIdapproveaskt; NotapproveChildetask.Title = w.Task.Title; NotapproveChildetask.Values = new List <TimeSheetValueJson>(); notApproveWHs.Add(NotapproveChildetask); } } } presenceHours.OrderBy(phItem => phItem.Date) .ToList().ForEach(phItem => { double phHours = phItem.Hours; List <WorkHour> selWorkHour = workHours.Where(whItem => whItem.Date.Equals(phItem.Date)).ToList(); double whHours = (selWorkHour != null && selWorkHour.Count >= 0) ? selWorkHour.Sum(x => x.Hours) : 0; List <WorkHour> appWorkHour = approveItems.Where(whItem => whItem.Date.Equals(phItem.Date)).ToList(); double apphours = (appWorkHour != null && appWorkHour.Count >= 0) ? appWorkHour.Sum(x => x.Hours) : 0; List <WorkHour> notappWorkHour = notApproveItems.Where(whItem => whItem.Date.Equals(phItem.Date)).ToList(); double notapphours = (notappWorkHour != null && notappWorkHour.Count >= 0) ? notappWorkHour.Sum(x => x.Hours) : 0; //Create Columns/Values for Presence Hours TimeSheetValueJson phTSJValue = new TimeSheetValueJson(); phTSJValue.Date = phItem.Date; phTSJValue.Day = phItem.Date.DayOfWeek.ToString(); phTSJValue.PersianDate = phItem.Date.ToPersianDateString(); phTSJValue.PersianDay = phItem.Date.ToPersianDayOfWeek(); phTSJValue.Title = phTSJValue.PersianDate + "-" + phTSJValue.PersianDay; phTSJValue.Value = DateUtility.ConvertToTimeSpan(phHours); tsjPresHours.Values.Add(phTSJValue); //Create Columns/Values for Work Hours TimeSheetValueJson whTSJValue = new TimeSheetValueJson(); whTSJValue.Date = phItem.Date; whTSJValue.Day = phItem.Date.DayOfWeek.ToString(); whTSJValue.PersianDate = phItem.Date.ToPersianDateString(); whTSJValue.PersianDay = phItem.Date.ToPersianDayOfWeek(); whTSJValue.Title = whTSJValue.PersianDate + "-" + whTSJValue.PersianDay; whTSJValue.Value = DateUtility.ConvertToTimeSpan(whHours); tsjWorkHours[0].Values.Add(whTSJValue); var groupingByDate = workHours.GroupBy(x => x.Date).Select(y => y.FirstOrDefault()).ToList(); var co = tsjWorkHours.Count(); for (int i = 1; i < co; i++) { TimeSheetValueJson whTSJValue1 = new TimeSheetValueJson(); whTSJValue1.Date = phItem.Date; whTSJValue1.Day = phItem.Date.DayOfWeek.ToString(); whTSJValue1.PersianDate = phItem.Date.ToPersianDateString(); whTSJValue1.PersianDay = phItem.Date.ToPersianDayOfWeek(); whTSJValue1.Title = whTSJValue1.PersianDate + "-" + whTSJValue1.PersianDay; whTSJValue1.Value = " "; tsjWorkHours[i].Values.Add(whTSJValue1); if (tsjWorkHours[i].Type == "Project") { var hourCount = selWorkHour.Where(y => y.ProjectId == tsjWorkHours[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } if (tsjWorkHours[i].Type == "Task") { var hourCount = selWorkHour.Where(y => y.TaskID == tsjWorkHours[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } } //Create Row for Different between Presence Hour And Work Hour TimeSheetValueJson diffPH_WHTSJValue = new TimeSheetValueJson(); diffPH_WHTSJValue.Date = phItem.Date; diffPH_WHTSJValue.Day = phItem.Date.DayOfWeek.ToString(); diffPH_WHTSJValue.PersianDate = phItem.Date.ToPersianDateString(); diffPH_WHTSJValue.PersianDay = phItem.Date.ToPersianDayOfWeek(); diffPH_WHTSJValue.Title = diffPH_WHTSJValue.PersianDate + "-" + diffPH_WHTSJValue.PersianDay; diffPH_WHTSJValue.Value = DateUtility.ConvertToTimeSpan(Math.Abs(phHours - whHours)); tsjDiffPH_WH.Values.Add(diffPH_WHTSJValue); //Create Columns/Values for Approve TimeSheetValueJson appTSJValue = new TimeSheetValueJson(); appTSJValue.Date = phItem.Date; appTSJValue.Day = phItem.Date.DayOfWeek.ToString(); appTSJValue.PersianDate = phItem.Date.ToPersianDateString(); appTSJValue.PersianDay = phItem.Date.ToPersianDayOfWeek(); appTSJValue.Title = appTSJValue.PersianDate + "-" + appTSJValue.PersianDay; appTSJValue.Value = DateUtility.ConvertToTimeSpan(apphours); approveWHs[0].Values.Add(appTSJValue); for (int i = 1; i < approveWHs.Count(); i++) { TimeSheetValueJson whTSJValue1 = new TimeSheetValueJson(); whTSJValue1.Date = phItem.Date; whTSJValue1.Day = phItem.Date.DayOfWeek.ToString(); whTSJValue1.PersianDate = phItem.Date.ToPersianDateString(); whTSJValue1.PersianDay = phItem.Date.ToPersianDayOfWeek(); whTSJValue1.Title = whTSJValue1.PersianDate + "-" + whTSJValue1.PersianDay; whTSJValue1.Value = " "; approveWHs[i].Values.Add(whTSJValue1); if (approveWHs[i].Type == "ProjectApprove") { var hourCount = appWorkHour.Where(y => y.ProjectId == approveWHs[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } if (approveWHs[i].Type == "TaskApprove") { var hourCount = appWorkHour.Where(y => y.TaskID == approveWHs[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } } //Create Columns/Values for NotApprove TimeSheetValueJson notappTSJValue = new TimeSheetValueJson(); notappTSJValue.Date = phItem.Date; notappTSJValue.Day = phItem.Date.DayOfWeek.ToString(); notappTSJValue.PersianDate = phItem.Date.ToPersianDateString(); notappTSJValue.PersianDay = phItem.Date.ToPersianDayOfWeek(); notappTSJValue.Title = notappTSJValue.PersianDate + "-" + notappTSJValue.PersianDay; notappTSJValue.Value = DateUtility.ConvertToTimeSpan(notapphours); notApproveWHs[0].Values.Add(notappTSJValue); for (int i = 1; i < notApproveWHs.Count(); i++) { TimeSheetValueJson whTSJValue1 = new TimeSheetValueJson(); whTSJValue1.Date = phItem.Date; whTSJValue1.Day = phItem.Date.DayOfWeek.ToString(); whTSJValue1.PersianDate = phItem.Date.ToPersianDateString(); whTSJValue1.PersianDay = phItem.Date.ToPersianDayOfWeek(); whTSJValue1.Title = whTSJValue1.PersianDate + "-" + whTSJValue1.PersianDay; whTSJValue1.Value = " "; notApproveWHs[i].Values.Add(whTSJValue1); if (notApproveWHs[i].Type == "ProjectNotApprove") { var hourCount = notappWorkHour.Where(y => y.ProjectId == notApproveWHs[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } if (notApproveWHs[i].Type == "TaskNotApprove") { var hourCount = notappWorkHour.Where(y => y.TaskID == notApproveWHs[i].UID).Sum(x => x.Hours); whTSJValue1.Value = DateUtility.ConvertToTimeSpan(hourCount); } } }); result.Add(tsjPresHours); foreach (var item in tsjWorkHours) { result.Add(item); } result.Add(tsjDiffPH_WH); foreach (var approve in approveWHs) { result.Add(approve); } foreach (var notapprove in notApproveWHs) { result.Add(notapprove); } return(result); }
public IActionResult approveDeny(vmApproveDenyRequest request) { try { if (!this.MainChecks(request.ver, out string error)) { throw new Exception(error); } if (request.approveIds.Count == 0 && request.denyIds.Count == 0) { throw new Exception("موردی برای تایید یا رد مشخص نشده است"); } var currentUser = new UserHelper().GetCurrent(this._uow, this.UserName); TimeSheetManager timeSheetManager = new TimeSheetManager(this._uow); if (request.type == 10) { //workhour foreach (var itemForApprove in request.approveIds) { var item = timeSheetManager.GetByID(itemForApprove.id); approveDenyWorkhour(true, currentUser, timeSheetManager, item, itemForApprove.description); } foreach (var itemForDeny in request.denyIds) { var item = timeSheetManager.GetByID(itemForDeny.id); approveDenyWorkhour(false, currentUser, timeSheetManager, item, itemForDeny.description); } } if (request.type == 1) { //ماموریت ساعتی HourlyMissionManager dlm = new HourlyMissionManager(this._uow); foreach (var itemForApprove in request.approveIds) { var dailyLeave = dlm.GetByID(itemForApprove.id); approveDenyHourlyMission(true, currentUser, timeSheetManager, dlm, dailyLeave, itemForApprove.description); } foreach (var itemForDeny in request.denyIds) { var dailyLeave = dlm.GetByID(itemForDeny.id); approveDenyHourlyMission(false, currentUser, timeSheetManager, dlm, dailyLeave, itemForDeny.description); } this._uow.SaveChanges(); } if (request.type == 2) { //مرخصی ساعتی HourlyLeaveManager dlm = new HourlyLeaveManager(this._uow); foreach (var itemForApprove in request.approveIds) { var dailyLeave = dlm.GetByID(itemForApprove.id); approveDenyHourlyLeave(true, currentUser, timeSheetManager, dlm, dailyLeave, itemForApprove.description); } foreach (var itemForDeny in request.denyIds) { var dailyLeave = dlm.GetByID(itemForDeny.id); approveDenyHourlyLeave(false, currentUser, timeSheetManager, dlm, dailyLeave, itemForDeny.description); } this._uow.SaveChanges(); } if (request.type == 3) { //مرخصی روزانه DailyLeaveManager dlm = new DailyLeaveManager(this._uow); foreach (var itemForApprove in request.approveIds) { var dailyLeave = dlm.GetByID(itemForApprove.id); approveDenyDailyLeave(true, currentUser, timeSheetManager, dlm, dailyLeave, itemForApprove.description); } foreach (var itemForDeny in request.denyIds) { var dailyLeave = dlm.GetByID(itemForDeny.id); approveDenyDailyLeave(false, currentUser, timeSheetManager, dlm, dailyLeave, itemForDeny.description); } this._uow.SaveChanges(); } return(Ok(new { message = "عملیات تایید با موفقیت انجام گردید" })); } catch (Exception ex) { return(this.ReturnError(ex, "خطا در ذخیره تایید و رد ها")); } }