private void btnDocLeave_Click(object sender, EventArgs e)
        {
            int  data   = 0;
            bool _excep = false;

            using (var uow = (AdoNetUnitOfWork)UnitOfWorkFactory.Create(UnitOfWorkFactory.ConnectionType.SQL, Connection.connectionString))
            {
                try
                {
                    Models.AnnualLeave annualLeave = new Models.AnnualLeave()
                    {
                        WorkerID   = (int)cmbDoc.SelectedValue,
                        WorkerType = (int)type,
                        Duration   = Convert.ToInt32(txtLeaveDuration.Text),
                        LeaveType  = chkDHasReport.Checked ? 2 : 1,
                        DocID      = (int)cmbExtraDoctor.SelectedValue
                    };
                    var dRepos = new DoctorRepository(uow);
                    data = dRepos.InsertAnnual(annualLeave);
                    uow.SaveChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    _excep = true;
                }
                if (data == 3 && _excep == false)
                {
                    MessageBox.Show("The operation is successfull");
                }
            }
        }
        private void GetAnnualLeaveRequests()
        {
            var client = new HttpClient
            {
                BaseAddress = new Uri(_url),
            };

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var response = client.GetAsync("GetAnnualLeaveRequests?StaffId=" + staff.Id).Result;

            if (response.IsSuccessStatusCode)
            {
                var result = JsonConvert.DeserializeObject <List <AnnualLeaveRequestsViewModel> >(response.Content.ReadAsStringAsync().Result);

                foreach (var item in result)
                {
                    var annualLeaveRequest = new Models.AnnualLeave()
                    {
                        CancelReason  = item.CancelReason,
                        DateRequested = item.DateRequested,
                        Ending        = item.Ending,
                        EndingTime    = item.EndingTime,
                        Id            = item.Id,
                        IsSynced      = item.IsSynced,
                        Notes         = item.Notes,
                        RequestId     = item.RequestId,
                        StaffId       = item.StaffId,
                        Starting      = item.Starting,
                        StartingTime  = item.StartingTime,
                        TotalDays     = item.TotalDays,
                        StatusId      = item.StatusId,
                        DeclineReason = item.DeclineReason,
                    };

                    App.AnnualLeaveDatabase.InsertUpdateAnnualLeaveRequest(annualLeaveRequest);
                }
            }
        }
Пример #3
0
        private async void SaveAnnualLeaveRequest_ClickedAsync(object sender, EventArgs e)
        {
            try
            {
                ApplyActivityIndicator();

                var staff = App.StaffDatabase.GetStaffById(Convert.ToInt32(App.SettingsDatabase.GetSetting("AssignedStaffId").Value));

                var startDate = StartDate.Date;
                var endDate   = EndDate.Date;

                var m = new Models.AnnualLeave
                {
                    StaffId       = staff.Id,
                    CancelReason  = null,
                    DateRequested = DateTime.Now,
                    Ending        = endDate,
                    Notes         = Notes.Text,
                    RequestId     = Guid.NewGuid(),
                    Starting      = startDate,
                    StatusId      = 1,
                    DeclineReason = null,
                    SentToOffice  = false,
                    EndingTime    = 1,
                    StartingTime  = 1,
                    IsSynced      = false,
                    TotalDays     = 0
                };

                var startTime = StartTime;
                var endTime   = EndTime;

                if ((String)startTime.SelectedItem == "Morning")
                {
                    m.StartingTime = 1;
                }
                else
                {
                    m.StartingTime = 2;
                }

                if ((String)endTime.SelectedItem == "Afternoon")
                {
                    m.EndingTime = 1;
                }
                else
                {
                    m.EndingTime = 2;
                }

                var totalWholeDays = Weeks.GetBusinessDays(m.Starting, m.Ending);
                var bankHolidays   = Weeks.CountBankHolidays(m.Starting, m.Ending);

                if (m.StartingTime == 1 && m.EndingTime == 1)
                {
                    m.TotalDays = (totalWholeDays - .5);
                }
                else if (m.StartingTime == 1 && m.EndingTime == 2)
                {
                    m.TotalDays = totalWholeDays;
                }
                else if (m.StartingTime == 2 && m.EndingTime == 2)
                {
                    m.TotalDays = (totalWholeDays - .5);
                }
                else
                {
                    m.TotalDays = totalWholeDays;
                }

                m.TotalDays = (m.TotalDays - bankHolidays);

                if (staff.AnnualLeaveBalance < m.TotalDays)
                {
                    ResetActivityIndicator();

                    await DisplayAlert("Error", "You currently do not have enough annual leave remaining.", "Acknowledge");
                }
                else if (m.Starting > m.Ending)
                {
                    ResetActivityIndicator();

                    await DisplayAlert("Error", "Ending date must be greater than the starting date.", "Acknowledge");
                }
                else
                {
                    if (App.AnnualLeaveDatabase.InsertAnnualLeaveRequest(m))
                    {
                        await Navigation.PushAsync(new Edit(m.Id));
                    }
                    else
                    {
                        ResetActivityIndicator();

                        await DisplayAlert("Error", "An error has occurred creating this annual leave request. Please contact support.", "Acknowledge");
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }