private async void ShtoShpenzim_Clicked(object sender, EventArgs e)
        {
            if (shpenzimetPicker.SelectedItem != null)
            {
                UserExpenseVM userInc = new UserExpenseVM();
                userInc.UserId       = (int)Application.Current.Properties["userId"];
                userInc.ExpenseId    = shpenzimetPicker.SelectedIndex + 1;
                userInc.ExpenseValue = Convert.ToDecimal(shpenzimiEntry.Text);

                HttpClient          httpClient = new HttpClient();
                var                 json       = JsonConvert.SerializeObject(userInc);
                var                 uri        = new Uri("https://personalexpensesapi.conveyor.cloud/api/usersexpens");
                var                 content    = new StringContent(json, Encoding.UTF8, "application/json");
                HttpResponseMessage response   = await httpClient.PostAsync(uri, content);

                if (response.IsSuccessStatusCode)
                {
                    shpenzimiEntry.Text = null;
                    Vibration.Vibrate();
                    await DisplayAlert("Sukses", "Shpenzimi u shtua me sukses", "OK");

                    await Navigation.PopAsync();
                }

                else
                {
                    await DisplayAlert("DESHTOI", "Ka deshtuar " + json, "OK");
                }
            }
        }
        public ActionResult UserExpenseList(DataTablesViewModel param, string fromDate, string toDate)
        {
            try
            {
                if (!PermissionControl.CheckPermission(UserAppPermissions.ALP_Costing_View))
                {
                    return(RedirectToAction("Restricted", "Home"));
                }

                DateTime frdate = DateTime.Now;
                if (!string.IsNullOrWhiteSpace(fromDate))
                {
                    frdate = DateTime.Parse(fromDate);
                }

                DateTime tdate = DateTime.Now;
                if (!string.IsNullOrWhiteSpace(toDate))
                {
                    tdate = DateTime.Parse(toDate);
                }

                logger.DebugFormat("Getting Users Expense List with From Date [{0}] and To date [{1}]", frdate.ToShortDateString(), tdate.ToShortDateString());


                UserExpenseVM userExpenseVM = new UserExpenseVM();
                userExpenseVM.DTObject = param;
                var list = userExpenseManagement.GetAllUserExpensesByParam(userExpenseVM, frdate, tdate);

                logger.DebugFormat("Successfully Retrieve Users Expense List Records [{2}] with From Date [{0}] and To date [{1}]", frdate.ToShortDateString(), tdate.ToShortDateString(), list.Count());

                return(Json(new
                {
                    sEcho = param.draw,
                    iTotalRecords = list.Select(i => i.DTObject.TotalRecordsCount).FirstOrDefault(),
                    iTotalDisplayRecords = list.Select(i => i.DTObject.TotalRecordsCount).FirstOrDefault(), // Filtered Count
                    aaData = list
                }));
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace);
                return(null);
            }
        }
 public IEnumerable <UserExpenseVM> GetAllUserExpensesByParam(UserExpenseVM param, DateTime fromDate, DateTime toDate)
 {
     return(userExpenseRepository.GetAllUserExpensesByParam(param, fromDate, toDate));
 }
        private IQueryable <UserExpenseVM> GetUserExpenseFiltersOrderQuery(IQueryable <UserExpenseVM> query, UserExpenseVM param)
        {
            try
            {
                //   var expression = PredicateBuilder.True<AssetsEntity>();
                if (param == null)
                {
                    return(query);
                }

                int index = -1;
                foreach (var columnData in param.DTObject.columns)
                {
                    index += 1;
                    if (columnData.orderable)
                    {
                        foreach (var row in param.DTObject.order.Where(i => i.column == index))
                        {
                            if (row.dir == "asc")
                            {
                                query = query.OrderBy(columnData.data);
                            }
                            else
                            {
                                query = query.OrderByDescending(columnData.data);
                            }
                        }
                    }
                }

                // string id = Utility.CovertID(param.DTObject.search.value, "UE-");

                if (param.DTObject.search.value != null && !string.IsNullOrEmpty(param.DTObject.search.value))
                {
                    query = query.Where(col => (
                                            col.DepartmentName.ToUpper().Contains(param.DTObject.search.value.ToUpper()) ||
                                            col.UserName.ToUpper().Contains(param.DTObject.search.value.ToUpper()) ||
                                            col.UserNumber.ToUpper().Contains(param.DTObject.search.value.ToUpper()) ||
                                            col.Billable_Salary_PKR.ToString().Contains(param.DTObject.search.value.ToUpper()) ||
                                            col.Billable_Salary_USD.ToString().Contains(param.DTObject.search.value.ToUpper())
                                            ));
                }
                return(query);
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace);
                return(null);
            }
        }
        public IEnumerable <UserExpenseVM> GetAllUserExpensesByParam(UserExpenseVM param, DateTime fromDate, DateTime toDate)
        {
            try
            {
                IQueryable <UserExpenseVM> query = (from ue in DbContext.UserExpenses.AsNoTracking()
                                                    join user in DbContext.Users.AsNoTracking() on ue.UserID.ToString() equals user.Id
                                                    join dept in DbContext.Departments.AsNoTracking() on ue.DepartmentID equals dept.DepartmentID
                                                    orderby ue.ExpenseDate descending
                                                    where (DbFunctions.TruncateTime(ue.ExpenseDate) >= DbFunctions.TruncateTime(fromDate) && DbFunctions.TruncateTime(ue.ExpenseDate) <= DbFunctions.TruncateTime(toDate) && ue.IsActive)
                                                    select new UserExpenseVM
                {
                    UserExpenseID = ue.UserExpenseID,
                    SerialNumber = ue.SerialNumber,
                    UserName = user.FirstName + " " + user.LastName,
                    UserNumber = user.EmployeeNumber,
                    DepartmentName = dept.Name,
                    ExpenseDate = ue.ExpenseDate,
                    Monthly_Salary = ue.Monthly_Salary,
                    Monthly_Salary2 = ue.Monthly_Salary2,
                    EOBI_Employer = ue.EOBI_Employer,
                    PF_Employer = ue.PF_Employer,
                    Mobile_Allowance = ue.Mobile_Allowance,
                    Bonus = ue.Bonus,
                    Meal_Reimbursement = ue.Meal_Reimbursement,
                    Transportation = ue.Transportation,
                    Leave_Encashment = ue.Leave_Encashment,
                    Incentive_PSM = ue.Incentive_PSM,
                    Health_Insurance = ue.Health_Insurance,
                    Medical_OPD = ue.Medical_OPD,
                    Billable_Salary_PKR = ue.Billable_Salary_PKR,
                    Billable_Salary_USD = ue.Billable_Salary_USD
                });

                query = GetUserExpenseFiltersOrderQuery(query, param);


                int totalRecord = query.Count();

                var userExpenseVM = query.Skip(param.DTObject.start).Take(param.DTObject.length).ToList().Select(index => new UserExpenseVM
                {
                    UserExpenseID       = index.UserExpenseID,
                    SerialNumber        = index.SerialNumber,
                    UserName            = index.UserName,
                    UserNumber          = index.UserNumber,
                    DepartmentName      = index.DepartmentName,
                    ExpenseDate         = index.ExpenseDate,
                    Monthly_Salary      = index.Monthly_Salary,
                    Monthly_Salary2     = index.Monthly_Salary2,
                    EOBI_Employer       = index.EOBI_Employer,
                    PF_Employer         = index.PF_Employer,
                    Mobile_Allowance    = index.Mobile_Allowance,
                    Bonus               = index.Bonus,
                    Meal_Reimbursement  = index.Meal_Reimbursement,
                    Transportation      = index.Transportation,
                    Leave_Encashment    = index.Leave_Encashment,
                    Incentive_PSM       = index.Incentive_PSM,
                    Health_Insurance    = index.Health_Insurance,
                    Medical_OPD         = index.Medical_OPD,
                    Billable_Salary_PKR = index.Billable_Salary_PKR,
                    Billable_Salary_USD = index.Billable_Salary_USD,
                    DTObject            = new DataTablesViewModel()
                    {
                        TotalRecordsCount = totalRecord
                    }
                }).ToList();



                return(userExpenseVM);
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace);
                return(null);
            }
        }