public async Task <IActionResult> Edit(long id, [Bind("Id,Amount,Limit,MaxRange,MinRange,Remark,CreatedDate")] OverTimeSetting overTimeSetting)
        {
            if (id != overTimeSetting.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    //_context.Update(overTimeSetting);
                    //await _context.SaveChangesAsync();
                    await overTimeSettingRepository.Update(overTimeSetting);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OverTimeSettingExists(overTimeSetting.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(overTimeSetting));
        }
Exemplo n.º 2
0
        public List <PayRollViewModel> ClaculatePayRoll(int year, int month, List <EmployeeInfo> employee)
        {
            OverTimeSetting cList = context.OverTimeSettings.Last();

            List <PayRollViewModel> po = new List <PayRollViewModel>();

            foreach (var item in employee)
            {
                PayRollViewModel p = new PayRollViewModel();

                //string otsql = "select ISNULL(SUM(OTTime),0)*(" + cList.Amount / 60 + ") As Amount from OverTime where Month(OTDate)=" + month + " AND Year(OTDate)=" + year + " AND FromEmployeeInfoId =" + item.Id;

                //     din = context.Query<PayRollCreateViewModel>().FromSql(otsql).Single();
                //p.OTFee = din.Amount;
                decimal ad = context.OverTimes.Where(o => o.OTDate.Month == month && o.OTDate.Year == year && o.FromEmployeeInfoId == item.Id).Sum(i => i.OTTime * Convert.ToDecimal(cList.Amount / 60));
                p.OTFee = ad;
                // string all1 ="select ISNULL(SUM(at.AmmountPerDay),0) As AllowanceAmount from AllowanceDetail ad join AllowancdType at on at.Id = ad.AllowanceTypeId where ad.Month =" + month + " AND ad.Year =" + year + " AND ad.EmployeeInfoId =" + item.Id + " AND at.Status='Monthly'";
                //        pav = context.Query<PayRollAllowanceViewModel>().FromSql(all1).Single();
                // // var allm = context.AllowanceDetails.FromSql("select ISNULL(SUM(at.AmmountPerDay), 0) from AllowanceDetail ad join AllowancdType at on at.Id = ad.AllowanceTypeId where ad.Month = " + month + " AND ad.Year = " + year + " AND ad.EmployeeInfoId = " + item.Id + " AND at.Status = 'Monthly'").Single();
                long allwnceAmountMonthly = context.AllowanceDetails.Include(c => c.AllowanceType).Where(b => b.Month == month.ToString() && b.Year == year.ToString() && b.EmployeeInfoId == item.Id && b.AllowanceType.Status == "Monthly").Sum(i => i.AllowanceType.AmmountPerDay);
                int  atttCount            = context.Attendances.Where(a => a.AttendanceDate.Month == month && a.AttendanceDate.Year == year && a.EmployeeInfoId == item.Id && a.Status == "Present").ToList().Count();
                long allowanceAmountDaily = context.AllowanceDetails.Include(c => c.AllowanceType).Where(b => b.Month == month.ToString() && b.Year == year.ToString() && b.EmployeeInfoId == item.Id && b.AllowanceType.Status == "Daily").Sum(i => i.AllowanceType.AmmountPerDay * atttCount);
                // string all2 = "select COUNT(Id) from Attendance a where Month(a.AttendanceDate) =" + month + " And Year(a.AttendanceDate)=" + year + " And a.EmployeeInfoId =" + item.Id + " And a.Status = 'Present'";
                // pav = context.Query<PayRollAllowanceViewModel>().FromSql(all2).Single();

                // string all3 = "select ISNULL(SUM(at.AmmountPerDay), 0) *" + atttCount + " from AllowanceDetail ad join AllowancdType at on at.Id = ad.AllowanceTypeId where ad.Month =" + month + " And ad.Year =" + year + " And ad.EmployeeInfoId =" + item.Id + " And at.Status = 'Daily'";
                // pav = context.Query<PayRollAllowanceViewModel>().FromSql(all3).Single();
                decimal totalallowance = allwnceAmountMonthly + allowanceAmountDaily;
                p.TotalAllowence = totalallowance;
                long bonusPayroll = context.Bonuses.Include(c => c.BonusType).Where(b => b.Month == month.ToString() && b.Year == year.ToString() && b.EmployeeInfoId == item.Id).Sum(i => i.BonusType.Amount);
                p.Bonus = bonusPayroll;
                long basicSalary = context.EmployeeInfos.Where(a => a.Id == item.Id).Select(i => i.BasicSalary).Single();
                p.BasicSalary = basicSalary;
                int absentList = context.Attendances.Where(a => a.AttendanceDate.Month == month && a.AttendanceDate.Year == year && a.EmployeeInfoId == item.Id && a.Status == "Absent").ToList().Count();
                int days       = DateTime.DaysInMonth(year, month);
                //decimal panltyfee = (basicSalary / days) * absentList;
                decimal panltyfee = context.EmployeeInfos.Where(a => a.Id == item.Id).Select(i => (i.BasicSalary / days) * absentList).Single();
                p.PenaltyFee = panltyfee;
                string empName = context.EmployeeInfos.Where(a => a.Id == item.Id).Select(i => i.EmployeeName).Single();
                p.EmployeeName = empName;
                decimal netpay = (ad + totalallowance + bonusPayroll + basicSalary) - panltyfee;
                p.NetPay         = netpay;
                p.EmployeeInfoId = item.Id;
                po.Add(p);
            }
            return(po);
        }
        public async Task <IActionResult> Create([Bind("Id,Amount,Limit,MaxRange,MinRange,Remark,CreatedDate")] OverTimeSettingViewModel overTimeSetting)
        {
            if (ModelState.IsValid)
            {
                //_context.Add(overTimeSetting);
                //await _context.SaveChangesAsync();
                OverTimeSetting ov = new OverTimeSetting()
                {
                    Amount      = overTimeSetting.Amount,
                    Hour        = overTimeSetting.Hour,
                    Remark      = overTimeSetting.Remark,
                    CreatedDate = overTimeSetting.CreatedDate
                };
                await overTimeSettingRepository.Save(ov);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(overTimeSetting));
        }
 public async Task Update(OverTimeSetting s)
 {
     context.Update(s);
     await context.SaveChangesAsync();
 }
 public async Task Save(OverTimeSetting c)
 {
     context.Add(c);
     await context.SaveChangesAsync();
 }
 public async Task Delete(OverTimeSetting sa)
 {
     context.Remove(sa);
     await context.SaveChangesAsync();
 }