コード例 #1
0
        public int getCountNum()
        {
            int userId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));

            var t1 = db.TAbsences
                     .Where(a => a.CEmployeeId == userId &&
                            a.CCountNum > 0 &&
                            a.CCountNum < 3 &&
                            a.CDate.Value.Month == Con.Month)
                     .ToList();
            List <TAbsence> list1 = new List <TAbsence>();

            foreach (var item in t1)
            {
                TAbsence avm1 = new TAbsence()
                {
                    CApplyNumber = item.CApplyNumber,
                    CDate        = item.CDate,
                    COn          = item.COn,
                    COff         = item.COff,
                    CStatus      = item.CStatus,
                    CCountNum    = item.CCountNum
                };
                list1.Add(avm1);
            }
            int total = list1.Sum(x => Convert.ToInt32(x.CCountNum)); //本月補登總數

            ViewBag.totalCountNum = total;                            //傳到view
            return(total);
        }
コード例 #2
0
        public IActionResult Edit(int?applyNum)
        {
            TimeSpan ConTime  = Con.TimeOfDay;  //09:00
            TimeSpan LateTime = Late.TimeOfDay; //10:00

            int userId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));

            int      countNum = getCountNum();
            TAbsence abs      = db.TAbsences.FirstOrDefault(a => a.CApplyNumber == applyNum);

            ViewBag.absence = applyNum;

            if ((applyNum != null) && (abs != null) && (abs.COn == null ? true : abs.COn < LateTime) && (countNum < 3))
            {
                CAbsenceViewModel obj = new CAbsenceViewModel()
                {
                    CApplyNumber = abs.CApplyNumber,
                    CDate        = abs.CDate,
                    CEmployeeId  = abs.CEmployeeId,
                    COn          = abs.COn,
                    COff         = abs.COff
                };
                return(View(obj));
            }
            else
            {
                return(RedirectToAction("LeaveCreate", "Leave"));
            }
        }
コード例 #3
0
        public IActionResult yesterdayVal(DateTime ysd)//判斷前一天是否有打卡
        {
            int userId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));

            TAbsence ab  = db.TAbsences.FirstOrDefault(a => a.CEmployeeId == userId && a.CDate.Value.Date == ysd); //尋找昨天的打卡紀錄
            var      day = ysd.DayOfWeek;                                                                          //星期
            TUser    u   = db.TUsers.FirstOrDefault(u => u.COnBoardDay != DateTime.Today && u.CEmployeeId == userId);

            if (u != null)
            {
                if (ab == null)
                {
                    if (day != DayOfWeek.Sunday && day != DayOfWeek.Saturday)//判斷昨天是否為六日
                    {
                        TAbsence absence = new TAbsence()
                        {
                            CEmployeeId = userId,
                            CDate       = ysd,
                            CStatus     = "異常"
                        };
                        db.Add(absence);
                        db.SaveChanges();
                    }
                }
                else if (ab != null)//昨天有打上班卡,但未打下班卡
                {
                    if (ab.COff == null)
                    {
                        ab.CStatus = "異常";
                        db.Update(ab);
                        db.SaveChanges();
                    }
                }
            }
            DateTime dtMonday = DateTime.Now.AddDays(1 - Convert.ToInt16(DateTime.Now.DayOfWeek)); //當週週一
            DateTime dtSunday = dtMonday.AddDays(6);                                               //當週週日

            var table = db.TAbsences
                        .Where(a => a.CEmployeeId == userId &&
                               a.CDate >= dtMonday &&
                               a.CDate <= dtSunday)
                        .OrderByDescending(a => a.CDate).ToList();
            List <CAbsenceViewModel> list = new List <CAbsenceViewModel>();

            foreach (var item in table)
            {
                CAbsenceViewModel avm = new CAbsenceViewModel()
                {
                    CApplyNumber = item.CApplyNumber,
                    CDate        = item.CDate,
                    COn          = item.COn,
                    COff         = item.COff,
                    CStatus      = item.CStatus
                };
                list.Add(avm);
            }
            getCountNum();
            return(PartialView("date_search", list));
        }
コード例 #4
0
        public IActionResult Edit(TAbsence absence, int id, DateTime?date, string?when, int?applyNum)
        {
            if (absence != null)
            {
                TAbsence absed    = db.TAbsences.FirstOrDefault(a => a.CApplyNumber == applyNum);
                TimeSpan ConTime  = Con.TimeOfDay;             //09:00
                TimeSpan tenOclck = Con.AddHours(1).TimeOfDay; //10:00

                if (absed != null)
                {
                    if (absed.COn == null && absed.COff != null)//補上班卡
                    {
                        absed.COn     = TimeSpan.Parse("09:00:00");
                        absed.CStatus = "正常";
                    }
                    else if (absed.COn != null && absed.COff == null)//補下班卡
                    {
                        absed.COff = TimeSpan.Parse("18:00:00");;
                        if (absed.COn > ConTime && absed.COn < tenOclck)//9:01
                        {
                            absed.CStatus = "遲到";
                        }
                        else if (absed.COn <= ConTime)//9:00前
                        {
                            absed.CStatus = "正常";
                        }
                    }
                    else if (absed.COn == null && absed.COff == null)//補上下班卡
                    {
                        if (when == "上班")
                        {
                            absed.COn     = TimeSpan.Parse("09:00:00");
                            absed.CStatus = "異常";
                        }
                        else if (when == "下班")
                        {
                            absed.COff    = TimeSpan.Parse("18:00:00");
                            absed.CStatus = "異常";
                        }
                    }
                    absed.CCountNum++;
                    db.Update(absed);
                    db.SaveChanges();
                }
            }
            getCountNum();
            TempData["fromEdit"] = 1;
            return(RedirectToAction("List"));
        }
コード例 #5
0
        public IActionResult getClockString_on(int id, DateTime date)//上班
        {
            try
            {
                int userId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));

                TAbsence td = db.TAbsences.FirstOrDefault(z => z.CDate.Value.Date == DateTime.Today && z.CEmployeeId == id && z.COn.HasValue); //尋找該員工今天的打卡紀錄
                if (td == null)                                                                                                                //今天未打卡
                {
                    if (now <= Con)                                                                                                            //9:00前
                    {
                        TAbsence b = new TAbsence()
                        {
                            CEmployeeId = id,
                            CDate       = date,
                            COn         = TimeSpan.Parse(now.ToString("HH:mm:ss")),
                            CStatus     = "正常",
                        };
                        db.TAbsences.Add(b);
                    }
                    else if (now > Con && now < Late)//9:00-9:59
                    {
                        TAbsence b = new TAbsence()
                        {
                            CEmployeeId = id,
                            CDate       = date,
                            COn         = TimeSpan.Parse(now.ToString("HH:mm:ss")),
                            CStatus     = "遲到",
                        };
                        db.TAbsences.Add(b);
                    }
                    else if (now >= Late)//10:00(含)之後
                    {
                        TAbsence b = new TAbsence()
                        {
                            CEmployeeId = id,
                            CDate       = date,
                            COn         = TimeSpan.Parse(now.ToString("HH:mm:ss")),
                            CStatus     = "異常",
                        };
                        db.TAbsences.Add(b);
                    }
                    db.SaveChanges();
                }
                DateTime dtMonday = DateTime.Now.AddDays(1 - Convert.ToInt16(DateTime.Now.DayOfWeek)); //當週週一
                DateTime dtSunday = dtMonday.AddDays(6);                                               //當週週日

                var table = db.TAbsences
                            .Where(a => a.CEmployeeId == userId &&
                                   a.CDate >= dtMonday &&
                                   a.CDate <= dtSunday)
                            .OrderByDescending(a => a.CDate).ToList();
                List <CAbsenceViewModel> list = new List <CAbsenceViewModel>();
                foreach (var item in table)
                {
                    CAbsenceViewModel avm = new CAbsenceViewModel()
                    {
                        CApplyNumber = item.CApplyNumber,
                        CDate        = item.CDate,
                        COn          = item.COn,
                        COff         = item.COff,
                        CStatus      = item.CStatus
                    };
                    list.Add(avm);
                }
                getCountNum();
                return(PartialView("ClockOnAndOff", list));
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #6
0
        public IActionResult getClockString_off(int id, DateTime date)//下班
        {
            try
            {
                int      userId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));
                DateTime now    = DateTime.Now;

                TAbsence td = db.TAbsences.FirstOrDefault(z => z.CDate.Value.Date == DateTime.Today && z.CEmployeeId == id && z.COn.HasValue); //尋找該員工今天的打卡紀錄
                TAbsence yd = db.TAbsences.FirstOrDefault(z => z.CEmployeeId == id && z.CDate.Value.Date == DateTime.Today.AddDays(-1));       //尋找該員工今天的打卡紀錄

                if (td != null)                                                                                                                //有打上班卡
                {
                    TimeSpan aonTime  = td.COn.Value;                                                                                          //上班卡的時間
                    TimeSpan ConTime  = Con.TimeOfDay;                                                                                         //09:00
                    TimeSpan LateTime = Late.TimeOfDay;                                                                                        //10:00
                    if (date == td.CDate)
                    {
                        if (aonTime > ConTime && aonTime < LateTime)
                        {
                            td.COff    = TimeSpan.Parse(now.ToString("HH:mm:ss"));
                            td.CStatus = "遲到";
                            db.SaveChanges();
                        }
                        else if (aonTime < ConTime)
                        {
                            td.COff    = TimeSpan.Parse(now.ToString("HH:mm:ss"));
                            td.CStatus = "正常";
                            db.SaveChanges();
                        }
                        else if (aonTime > LateTime)
                        {
                            td.COff    = TimeSpan.Parse(now.ToString("HH:mm:ss"));
                            td.CStatus = "異常";
                            db.SaveChanges();
                        }
                    }
                }
                else if (td == null)//沒打上班卡
                {
                    TAbsence b = new TAbsence()
                    {
                        CEmployeeId = id,
                        CDate       = date,
                        COff        = TimeSpan.Parse(now.ToString("HH:mm:ss")),
                        CStatus     = "異常",
                        CCountNum   = yd.CCountNum
                    };
                    db.TAbsences.Add(b);
                    db.SaveChanges();
                }
                DateTime dtMonday = DateTime.Now.AddDays(1 - Convert.ToInt16(DateTime.Now.DayOfWeek)); //當週週一
                DateTime dtSunday = dtMonday.AddDays(6);                                               //當週週日

                var table = db.TAbsences
                            .Where(a => a.CEmployeeId == userId &&
                                   a.CDate >= dtMonday &&
                                   a.CDate <= dtSunday)
                            .OrderByDescending(a => a.CDate).ToList();
                List <CAbsenceViewModel> list = new List <CAbsenceViewModel>();
                foreach (var item in table)
                {
                    CAbsenceViewModel avm = new CAbsenceViewModel()
                    {
                        CApplyNumber = item.CApplyNumber,
                        CDate        = item.CDate,
                        COn          = item.COn,
                        COff         = item.COff,
                        CStatus      = item.CStatus
                    };
                    list.Add(avm);
                }
                return(PartialView("ClockOnAndOff", list));
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #7
0
 public CAbsenceViewModel()
 {
     iv_absence = new TAbsence();
     iv_User    = new TUser();
     //iv_Dep = new TUserDepartment();
 }
コード例 #8
0
        //public TUserDepartment Dep { get { return iv_Dep; } }

        public CAbsenceViewModel(TAbsence a, TUser u /*, TUserDepartment d*/)
        {
            iv_absence = a;
            iv_User    = u;
            //iv_Dep = d;
        }