Exemple #1
0
        public HttpResponseMessage GetFingerPrintList(int FPMachineId)
        {
            CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());
            var list = checkInOutRepository.GetAllvwFingerPrint().Where(item => FPMachineId > 0);

            var res = Request.CreateResponse(HttpStatusCode.OK, list.ToList());

            return(res);
        }
Exemple #2
0
        public void FingerPrintInsertList([FromBody] FingerPrintInsertListModel model)
        {
            if (model.ListFingerPrint != null && model.ListFingerPrint.Count > 0)
            {
                ////Xóa dữ liệu cũ
                //var listUserId = string.Join(",", list.Select(n => n.UserId.ToString()).Distinct().ToArray());
                //string sqlQuery = "DELETE FROM Staff_FingerPrint WHERE UserId in (" + listUserId + ");";

                //Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery);

                CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());
                foreach (var item in model.ListFingerPrint)
                {
                    var fingerPrint = checkInOutRepository.GetAllFingerPrint()
                                      .Where(i => i.UserId == item.UserId &&
                                             i.Name == item.Name &&
                                             i.FingerIndex == item.FingerIndex)
                                      .FirstOrDefault();

                    if (fingerPrint == null)
                    {
                        fingerPrint              = new FingerPrint();
                        fingerPrint.CreatedDate  = DateTime.Now;
                        fingerPrint.ModifiedDate = DateTime.Now;
                        fingerPrint.FPMachineId  = item.FPMachineId;
                        fingerPrint.UserId       = item.UserId;
                        fingerPrint.Name         = item.Name;
                        fingerPrint.FingerIndex  = item.FingerIndex;
                        fingerPrint.TmpData      = item.TmpData;
                        fingerPrint.Privilege    = item.Privilege;
                        fingerPrint.Password     = item.Password;
                        fingerPrint.Enabled      = item.Enabled;
                        fingerPrint.Flag         = item.Flag;
                        fingerPrint.FPMachineId  = model.FPMachineId;
                        checkInOutRepository.InsertFingerPrint(fingerPrint);
                    }
                    else
                    {
                        if (fingerPrint.FPMachineId == model.FPMachineId && string.IsNullOrEmpty(fingerPrint.TmpData))
                        {
                            fingerPrint.ModifiedDate = DateTime.Now;
                            fingerPrint.TmpData      = item.TmpData;
                            checkInOutRepository.UpdateFingerPrint(fingerPrint);
                        }
                    }
                }
            }
        }
Exemple #3
0
        public void InsertList([FromBody] List <CheckInOut> list)
        {
            CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());

            foreach (var item in list)
            {
                checkInOutRepository.InsertCheckInOut(item);
            }

            //Xóa trùng lặp
            string sqlQuery = " WITH CTE AS " +
                              " ( SELECT 	TimeStr, UserEnrollNumber, ROW_NUMBER() OVER ( PARTITION BY TimeStr,UserEnrollNumber ORDER BY  TimeStr DESC,UserEnrollNumber) AS RowID "+
                              " FROM [dbo].[CheckInOut] ) " +
                              " DELETE FROM CTE " +
                              " WHERE RowID > 1; ";

            Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery);
        }
Exemple #4
0
        public void InsertList([FromBody] CheckInOutInsertListModel model)
        {
            if (model.ListCheckInOut != null && model.ListCheckInOut.Count > 0)
            {
                CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());
                foreach (var item in model.ListCheckInOut)
                {
                    item.CreatedDate = DateTime.Now;
                    checkInOutRepository.InsertCheckInOut(item);
                }

                //Xóa trùng lặp
                string sqlQuery = " WITH CTE AS " +
                                  " ( SELECT 	FPMachineId, TimeStr, UserId, ROW_NUMBER() OVER ( PARTITION BY FPMachineId, TimeStr, UserId ORDER BY  TimeStr DESC, UserId, FPMachineId) AS RowID "+
                                  " FROM [dbo].[Staff_CheckInOut] ) " +
                                  " DELETE FROM CTE " +
                                  " WHERE RowID > 1; ";

                Domain.Helper.SqlHelper.ExecuteSQL(sqlQuery);
            }
        }
Exemple #5
0
        public void Insert([FromBody] CheckInOut checkInOut)
        {
            CheckInOutRepository checkInOutRepository = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());

            checkInOutRepository.InsertCheckInOut(checkInOut);
        }
Exemple #6
0
        public static void KiemTraVaTinhDuLieuChamCong(vwWorkSchedules item, WorkSchedules save_database, DateTime?HourIn, DateTime?HourOut)
        {
            StaffsRepository              staffRepository               = new StaffsRepository(new Domain.Staff.ErpStaffDbContext());
            SymbolTimekeepingRepository   symboltimekeepingRepository   = new SymbolTimekeepingRepository(new Domain.Staff.ErpStaffDbContext());
            DayOffRepository              dayoffRepository              = new DayOffRepository(new Domain.Staff.ErpStaffDbContext());
            ShiftsRepository              shiftsRepository              = new ShiftsRepository(new Domain.Staff.ErpStaffDbContext());
            CheckInOutRepository          checkInOutRepository          = new CheckInOutRepository(new Domain.Staff.ErpStaffDbContext());
            WorkSchedulesRepository       workSchedulesRepository       = new WorkSchedulesRepository(new Domain.Staff.ErpStaffDbContext());
            RegisterForOvertimeRepository registerForOvertimeRepository = new RegisterForOvertimeRepository(new Domain.Staff.ErpStaffDbContext());

            //lấy danh sách đăng ký tăng ca có thời gian bắt đầu tăng ca nằm trong khoảng thời gian của ca làm việc.
            //sắp xếp theo thời gian bắt đầu tăng ca... nếu có nhiều đăng ký tăng ca cùng 1 lúc thì chỉ lấy dòng đăng ký đầu tiên.
            //var dkTangCa = registerForOvertimeRepository.GetAllvwRegisterForOvertime().Where(x => x.StartHour >= item.HoursIn && x.StartHour <= item.HoursOut && x.StaffId == item.StaffId).OrderBy(x => x.StartHour);

            #region chuyển đổi thời gian của ca làm việc từ string sang DateTime
            //tách chuỗi thời gian của ca làm việc
            string strStartTime    = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTime;
            string strStartTimeOut = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTimeOut;
            string strStartTimeIn  = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.StartTimeIn;
            string strEndTime      = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTime;
            string strEndTimeIn    = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTimeIn;
            string strEndTimeOut   = item.Day.Value.ToString("dd/MM/yyyy") + " " + item.EndTimeOut;
            // chuyển đổi thời gian của ca làm việc từ string sang DateTime
            //DateTime d = DateTime.ParseExact("08/11/2017 12:00", "dd/MM/yyyy HH:mm", null);
            DateTime StartTime    = DateTime.ParseExact(strStartTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            DateTime StartTimeOut = DateTime.ParseExact(strStartTimeOut, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            DateTime StartTimeIn  = DateTime.ParseExact(strStartTimeIn, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            DateTime EndTime      = DateTime.ParseExact(strEndTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            DateTime EndTimeIn    = DateTime.ParseExact(strEndTimeIn, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            DateTime EndTimeOut   = DateTime.ParseExact(strEndTimeOut, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
            #endregion

            #region //nếu thời gian kết thúc ca mà nhỏ hơn thời gian bắt đầu ca thì xác định ca đó qua đêm... cộng thêm 1 ngày vào thời gian kết thúc ca.
            if (StartTime > EndTime)
            {
                EndTime = EndTime.AddDays(1);
            }
            if (StartTime > EndTimeIn)
            {
                EndTimeIn = EndTimeIn.AddDays(1);
            }
            if (StartTime > EndTimeOut)
            {
                EndTimeOut = EndTimeOut.AddDays(1);
            }
            #endregion
            //thời gian bắt đầu tính tăng ca
            int      setting_overtime = Convert.ToInt32(Helpers.Common.GetSetting("time_starts_counting_overtime"));
            DateTime DateOverTime     = EndTime.AddMinutes(setting_overtime);


            if (HourIn.Value != null)
            {
                save_database.HoursIn = HourIn;
                #region   //nếu thời gian vào của nhân viên lớn hơn thời gian của ca làm việc thì tính thời gian đi trễ
                if (save_database.HoursIn > StartTime)
                {
                    //tính số phút đi trễ
                    TimeSpan a = save_database.HoursIn.Value.Subtract(StartTime);
                    //trừ đi số giờ đi trễ cho phép.
                    var q = Convert.ToInt32(a.TotalMinutes) - item.MinuteLate;
                    //cập nhật số giờ đi trễ
                    if (q > 0)
                    {
                        //đi trễ
                        save_database.Total_minute_work_late = q;
                    }
                    else
                    {
                        //đi đúng giờ
                        save_database.Total_minute_work_late = 0;
                    }
                }
                else
                {
                    //đi đúng giờ
                    save_database.Total_minute_work_late = 0;
                }
                #endregion
            }
            else
            {
                //để đây xử lý sau, cho=0 để ko bị lỗi... còn trường hợp nghỉ phép nữa
                save_database.Total_minute_work_late = 0;
            }
            //var HourOut = listcheckinout.Where(xx => xx.TimeStr > EndTimeIn && xx.TimeDate.Value.ToString("dd/MM/yyyy") == EndTime.ToString("dd/MM/yyyy") && xx.UserId == item.UserEnrollNumber).OrderByDescending(xx => xx.TimeStr).ToList();
            if (HourOut != null)
            {
                save_database.HoursOut = HourOut;
            }
            if (save_database.HoursOut >= DateOverTime)
            {
                #region tăng ca
                TimeSpan a = save_database.HoursOut.Value.Subtract(EndTime);
                save_database.Total_minute_work_overtime = Convert.ToInt32(a.TotalMinutes);
                #endregion
            }
            else
            {
                #region về sớm (về đúng giờ) không có tăng ca

                TimeSpan a = EndTime.Subtract(save_database.HoursOut.Value);
                var      q = Convert.ToInt32(a.TotalMinutes) - item.MinuteEarly;
                if (q > 0)
                {
                    //về sớm
                    save_database.Total_minute_work_early = q;
                }
                else
                {
                    //về đúng giờ
                    save_database.Total_minute_work_early = 0;
                }
                save_database.Total_minute_work_overtime = 0;
                #endregion
            }
            #region tính số phút làm trong 1 ca
            if (save_database.HoursIn != null && save_database.HoursOut != null)
            {
                TimeSpan total = EndTime.Subtract(StartTime);
                save_database.Total_minute_work = Convert.ToInt32(total.TotalMinutes) + save_database.Total_minute_work_overtime - save_database.Total_minute_work_late - save_database.Total_minute_work_early;
            }
            #endregion

            #region xét ký hiệu chấm công
            if (save_database.Symbol == null)
            {
                //nếu chưa đi làm thì xét trường hợp có phép hoặc không phép.
                if (save_database.HoursIn == null && save_database.HoursOut == null)
                {
                    var phep = dayoffRepository.GetAllvwDayOff().Where(x => x.DayStart <= save_database.Day && x.DayEnd >= save_database.Day && x.StaffId == save_database.StaffId);
                    if (phep.Count() > 0)
                    {
                        save_database.Symbol = phep.FirstOrDefault().TypeDayOffId;
                    }
                    else
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("K").Id;
                    }
                }

                //nếu chỉ có giờ ra thì lưu ký hiệu đi làm chưa có
                else if (save_database.HoursIn == null)
                {
                    save_database.Symbol                     = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("DLo").Id;
                    save_database.Total_minute_work          = 0;
                    save_database.Total_minute_work_early    = 0;
                    save_database.Total_minute_work_late     = 0;
                    save_database.Total_minute_work_overtime = 0;
                }
                //nếu chỉ có giờ vào thì lưu ký hiệu chưa có giờ vào.
                else if (save_database.HoursOut == null)
                {
                    save_database.Symbol                     = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("DVo").Id;
                    save_database.Total_minute_work          = 0;
                    save_database.Total_minute_work_early    = 0;
                    save_database.Total_minute_work_late     = 0;
                    save_database.Total_minute_work_overtime = 0;
                }
                else
                {
                    //nếu có đi làm thì xét trường hợp đi trễ, về sớm, đi đúng giờ, tăng ca
                    if (save_database.Total_minute_work_late == 0 && save_database.Total_minute_work_early == 0)
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("X").Id;
                    }
                    else if (save_database.Total_minute_work_late > 0 && save_database.Total_minute_work_early > 0)
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Tr,Sm").Id;
                    }
                    else if (save_database.Total_minute_work_late > 0)
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Tr").Id;
                    }
                    else if (save_database.Total_minute_work_early > 0)
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("Sm").Id;
                    }
                    if (save_database.Total_minute_work_overtime > 0)
                    {
                        save_database.Symbol = symboltimekeepingRepository.GetSymbolTimekeepingByCodeDefault("+").Id;
                    }
                }
            }
            #endregion
        }