Exemplo n.º 1
0
        public JsonResult SaveLeaveForUser(LeaveFormModel leave, UserModel user)
        {
            string serverResponse = "";

            if (leave != null)
            {
                LeaveService.SaveUpdateAdmin(leave, user, out serverResponse);
            }

            return(Json(new { errorMessage = serverResponse }));
        }
Exemplo n.º 2
0
        public JsonResult CancelLeave(LeaveFormModel leave)
        {
            string serverResponse = "";

            leave.Status = "X";

            if (leave != null)
            {
                LeaveService.SaveUpdate(leave, out serverResponse);
            }

            return(Json(new { errorMessage = serverResponse }));
        }
Exemplo n.º 3
0
 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);
     });
 }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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;
            }
        }