public JsonResult SaveLeaveForUser(LeaveFormModel leave, UserModel user) { string serverResponse = ""; if (leave != null) { LeaveService.SaveUpdateAdmin(leave, user, out serverResponse); } return(Json(new { errorMessage = serverResponse })); }
public JsonResult CancelLeave(LeaveFormModel leave) { string serverResponse = ""; leave.Status = "X"; if (leave != null) { LeaveService.SaveUpdate(leave, out serverResponse); } return(Json(new { errorMessage = serverResponse })); }
public LeaveFormPageViewModel(INavigationService navigationService, IPageDialogService dialogService, LeaveFormsManager leaveFormsManager, LeaveFormTypesManager leaveFormTypesManager, RefreshTokenManager refreshTokenManager, SystemStatusManager systemStatusManager, AppStatus appStatus) { this.navigationService = navigationService; this.dialogService = dialogService; this.leaveFormsManager = leaveFormsManager; this.leaveFormTypesManager = leaveFormTypesManager; this.refreshTokenManager = refreshTokenManager; this.systemStatusManager = systemStatusManager; this.appStatus = appStatus; RefreshCommand = new DelegateCommand(async() => { IsRefreshing = true; await LoadDataAsync(); IsRefreshing = false; }); AddCommand = new DelegateCommand(async() => { LeaveFormModel leaveFormModel = new LeaveFormModel() { BeginTime = DateTime.Today + new TimeSpan(09, 00, 00), EndTime = DateTime.Today + new TimeSpan(18, 00, 00), Id = 0, TotalHours = 8, user = new UserDTO() { Id = appStatus.SystemStatus.UserID }, Description = "請假原因", leaveFormType = new LeaveFormTypeModel() { Id = leaveFormTypesManager.Items[0].Id, Name = leaveFormTypesManager.Items[0].Name }, }; NavigationParameters fooPara = new NavigationParameters(); fooPara.Add("Record", leaveFormModel); await navigationService.NavigateAsync("LeaveFormDetailPage", fooPara); }); ItemTappedCommand = new DelegateCommand(async() => { var leaveFormSelectedItemClone = LeaveFormSelectedItem.Clone(); NavigationParameters fooPara = new NavigationParameters(); fooPara.Add("Record", leaveFormSelectedItemClone); await navigationService.NavigateAsync("LeaveFormDetailPage", fooPara); }); }
private async System.Threading.Tasks.Task LoadDataAsync(bool isDownload = true) { if (isDownload) { using (IProgressDialog fooIProgressDialog = UserDialogs.Instance.Loading($"請稍後,更新資料中...", null, null, true, MaskType.Black)) { bool fooRefreshTokenResult = await RefreshTokenHelper.CheckAndRefreshToken(dialogService, refreshTokenManager, systemStatusManager, appStatus); if (fooRefreshTokenResult == false) { return; } var fooResult = await leaveFormsManager.GetAsync(); } } //await leaveFormsManager.ReadFromFileAsync(); LeaveFormItemsSource.Clear(); foreach (var item in leaveFormsManager.Items) { LeaveFormModel leaveFormModel = new LeaveFormModel() { Id = item.Id, user = new UserDTO() { Id = item.user.Id }, BeginTime = item.BeginTime, EndTime = item.EndTime, TotalHours = item.TotalHours, leaveFormType = new LeaveFormTypeModel() { Id = item.leaveFormType.Id }, Description = item.Description, }; var fooItem = leaveFormTypesManager.Items.FirstOrDefault(x => x.Id == item.leaveFormType.Id); leaveFormModel.leaveFormType.Name = fooItem.Name; LeaveFormItemsSource.Add(leaveFormModel); } }
public static void SaveUpdate(LeaveFormModel _leave, out string message) { try { message = ""; var leaveDays = _leave.EndDate.Subtract(_leave.StartDate).TotalDays + 1; using (var db = new SLVLOnlineEntities()) { if (_leave.ID == Guid.Empty || _leave.ID == null) { var leaveType = db.LeaveType.FirstOrDefault(r => r.ID == _leave.Type); if (leaveType.Type == "SL") { if (UniversalHelpers.CurrentUser.SickLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Sick Leave Credit"; } } else if (leaveType.Type == "VL" || leaveType.Type == "EL") { if (UniversalHelpers.CurrentUser.VacationLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Vacation Leave Credit"; } } else if (leaveType.Type == "PL") { if (UniversalHelpers.CurrentUser.SoloParentLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Solo Parent Leave Credit"; } } LeaveForm newLeave = new LeaveForm { ID = Guid.NewGuid(), CreatedBy = UniversalHelpers.CurrentUser.ID, CreatedDate = DateTime.Now, EndDate = _leave.EndDate, Reason = _leave.Reason, StartDate = _leave.StartDate, Status = "P", Type = _leave.Type }; db.Entry(newLeave).State = EntityState.Added; db.SaveChanges(); //========FIRST APPROVER EMAIL============== EmailService.SendEmail("Leave For Approval", UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName + " filed " + _leave.ShowType + " and waiting for your approval", UniversalHelpers.CurrentUser.FirstApproverEmail); //========SECOND APPROVER EMAIL============= EmailService.SendEmail("Leave For Approval", UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName + " filed " + _leave.ShowType + " and waiting for your approval", UniversalHelpers.CurrentUser.SecondApproverEmail); } else { leaveDays = DateTime.Parse(_leave.ShowEndDate).Subtract(DateTime.Parse(_leave.ShowStartDate)).TotalDays + 1; var leave = db.LeaveForm.FirstOrDefault(r => r.ID == _leave.ID); var leaveType = db.LeaveType.FirstOrDefault(r => r.ID == _leave.Type); if (leave != null) { var user = db.UserAccount.FirstOrDefault(r => r.ID == leave.CreatedBy); if (_leave.Status == "D") { EmailService.SendEmail("Filed Leave Declined", "Your filed Leave has been declined by " + UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName, user.Email); } else if (_leave.Status == "A") { EmailService.SendEmail("Filed Leave Approved", "Your filed Leave has been approved by " + UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName, user.Email); if (leaveType.Type == "SL") { user.SickLeaveCount = user.SickLeaveCount - (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } else if (leaveType.Type == "VL" || leaveType.Type == "EL") { user.VacationLeavCount = user.VacationLeavCount - (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } else if (leaveType.Type == "PL") { user.SoloParentLeaveCount = user.SoloParentLeaveCount - (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } } else if (_leave.Status == "X") { EmailService.SendEmail("Filed Leave of " + UniversalHelpers.CurrentUser.FirstName + " has been canceled", "Filed Leave of " + UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName + " has been canceled for some reasons", UniversalHelpers.CurrentUser.FirstApproverEmail); EmailService.SendEmail("Filed Leave of " + UniversalHelpers.CurrentUser.FirstName + " has been canceled", "Filed Leave of " + UniversalHelpers.CurrentUser.FirstName + " " + UniversalHelpers.CurrentUser.LastName + " has been canceled for some reasons", UniversalHelpers.CurrentUser.SecondApproverEmail); if (leave.Status == "A") { if (leaveType.Type == "SL") { user.SickLeaveCount = user.SickLeaveCount + (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } else if (leaveType.Type == "VL" || leaveType.Type == "EL") { user.VacationLeavCount = user.VacationLeavCount + (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } else if (leaveType.Type == "PL") { user.SoloParentLeaveCount = user.SoloParentLeaveCount + (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString())); } } } leave.Status = _leave.Status; leave.DeclineReason = _leave.DeclineReason; db.Entry(leave).State = EntityState.Modified; db.SaveChanges(); } } } } catch (Exception error) { message = error.Message; } }
public static void SaveUpdateAdmin(LeaveFormModel _leave, UserModel _user, out string message) { try { message = ""; var leaveDays = _leave.EndDate.Subtract(_leave.StartDate).TotalDays + 1; using (var db = new SLVLOnlineEntities()) { if (_leave.ID == Guid.Empty || _leave.ID == null) { var leaveType = db.LeaveType.FirstOrDefault(r => r.ID == _leave.Type); if (leaveType.Type == "SL") { if (_user.SickLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Sick Leave Credit"; } } else if (leaveType.Type == "VL" || leaveType.Type == "EL") { if (_user.VacationLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Vacation Leave Credit"; } } else if (leaveType.Type == "PL") { if (_user.SoloParentLeaveCount < (leaveDays * double.Parse(leaveType.LeaveDeduction.ToString()))) { message = "Insufficient Solo Parent Leave Credit"; } } Guid?CreatedBy = Guid.Empty; if (_leave.FileForUser == null || _leave.FileForUser == Guid.Empty) { CreatedBy = UniversalHelpers.CurrentUser.ID; } else { CreatedBy = _leave.FileForUser; } LeaveForm newLeave = new LeaveForm { ID = Guid.NewGuid(), CreatedBy = CreatedBy, CreatedDate = DateTime.Now, EndDate = _leave.EndDate, Reason = _leave.Reason, StartDate = _leave.StartDate, Status = "P", Type = _leave.Type }; db.Entry(newLeave).State = EntityState.Added; db.SaveChanges(); //========FIRST APPROVER EMAIL============== EmailService.SendEmail("Leave For Approval", _user.FirstName + " " + _user.LastName + " filed " + _leave.ShowType + " and waiting for your approval", _user.FirstApproverEmail); //========SECOND APPROVER EMAIL============= EmailService.SendEmail("Leave For Approval", _user.FirstName + " " + _user.LastName + " filed " + _leave.ShowType + " and waiting for your approval", _user.SecondApproverEmail); } } } catch (Exception error) { message = error.Message; } }