private bool AddUserAlloctionBilling(Guid userExpenseID, string userId, IEnumerable <UserAllocation> userAllocation, decimal billable_Salary_PKR, decimal billable_Salary_USD, DateTime expenseDate)
        {
            try
            {
                logger.DebugFormat("Adding user allocation billing by UserExpenseId[{0}], UserID[{1}], SalaryInPKR[{2], SalaryInUSD[{3}] , ExpenseDate[{4}]", userExpenseID, userId, billable_Salary_PKR, billable_Salary_USD, expenseDate.ToShortDateString());

                if (userAllocation != null && userAllocation.Count() > 0)
                {
                    var allocation = userAllocation.Where(x => x.UserID == userId && x.IsActive && x.Status.Equals(RequestStatus.Approved)).ToList();
                    if (allocation != null)
                    {
                        foreach (var allocate in allocation)
                        {
                            UserAllocationBilling userBilling = new UserAllocationBilling();
                            userBilling.DepartmentID  = allocate.DepartmentID;
                            userBilling.UserID        = userId;
                            userBilling.BillingDate   = expenseDate;
                            userBilling.UserExpenseID = userExpenseID;
                            userBilling.Percentage    = allocate.Percentage;
                            userBilling.CreatedBy     = new Guid(User.Identity.GetUserId());

                            if (billable_Salary_PKR > 0)
                            {
                                userBilling.AmountPKR = (billable_Salary_PKR / 100) * allocate.Percentage;
                            }

                            if (billable_Salary_USD > 0)
                            {
                                userBilling.AmountUSD = (billable_Salary_USD / 100) * allocate.Percentage;
                            }

                            userAllocationBillingManagement.Add(userBilling);
                        }
                        userAllocationBillingManagement.SaveUserAllocationBilling();
                        logger.DebugFormat("User Allocation Billing Successfully Saved");
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                logger.ErrorFormat("Exception Raised : Message[{0}] Stack Trace [{1}] ", ex.Message, ex.StackTrace);
                return(false);
            }
        }
 public bool Update(UserAllocationBilling model)
 {
     return(userAllocationBillingRepository.Update(model));
 }
 public bool Add(UserAllocationBilling model)
 {
     return(userAllocationBillingRepository.Add(model));
 }
 public bool Delete(UserAllocationBilling model)
 {
     model.LastModified = DateTime.Now;
     return(userAllocationBillingRepository.Update(model));
 }
 public IEnumerable <UserAllocationBilling> GetAllUserAllocationBillingByParam(UserAllocationBilling param, DateTime fromDate, DateTime toDate)
 {
     return(userAllocationBillingRepository.GetAllUserAllocationBillingByParam(param, fromDate, toDate));
 }