private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv)
        {
            if (TableDSNV == null || TableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in TableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa      = tmpLichTrinh.ListT1;
                //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa);
                cUserInfo nhanvien = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa,
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    BoPhan           = new cPhongBan()
                    {
                        ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString()
                    },
                };
                dsnv.Add(nhanvien);
            }
        }
Esempio n. 2
0
        private void KhoitaoDSNV(DataTable TableDSNV, List <cUserInfo> dsnv)
        {
            if (TableDSNV == null || TableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in TableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh  = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa       = tmpLichTrinh.ListT1;
                List <cShift>  tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa);               // đã bao gồm Khác(int.Minvalue)
                //List<cShift> tmpDSCaChonGio = new List<cShift>(ThamSo.DSCa);
                cUserInfo nhanvien = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong,
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    //BoPhan = new cPhongBan() { ID = (int)row["UserIDD"], TenPhongBan = row["Description"].ToString() },
                    MacDinhTinhPC150 = (bool)row["TinhPC150"],
                    Luong            = new cLuongThang(),
                };
                nhanvien.ClearAll();
                dsnv.Add(nhanvien);
            }
        }
        private void KhoitaoDSNV(DataTable fTableDSNV, List <cUserInfo> dsnv)
        {
            if (fTableDSNV == null || fTableDSNV.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in fTableDSNV.Rows)
            {
                cShiftSchedule tmpLichTrinh  = ThamSo.DSLichTrinh.Find(item => item.SchID == (int)row["SchID"]);
                List <cShift>  tmpDSCa       = tmpLichTrinh.ListT1;
                List <cShift>  tmpDSCaMoRong = ThamSo.TaoDSCaMoRong(tmpDSCa);               // đã bao gồm Khác(int.Minvalue)
                cUserInfo      nhanvien      = new cUserInfo()
                {
                    UserEnrollNumber = (int)row["UserEnrollNumber"], UserFullName = row["UserFullName"].ToString(),
                    HeSoLuongCB      = (Single)row["HeSoLuongCB"], HeSoLuongSP = (Single)row["HeSoLuongSP"],
                    LichTrinhLV      = tmpLichTrinh, DSCa = tmpDSCa, DSCaMoRong = tmpDSCaMoRong
                };
                dsnv.Add(nhanvien);
            }
        }
Esempio n. 4
0
        private void ChuanBiDSLichTrinh()
        {
            if (ThamSo.DSLichTrinh == null)
            {
                ThamSo.DSLichTrinh = new List <cShiftSchedule>();
            }
            else
            {
                ThamSo.DSLichTrinh.Clear();
            }
            List <cShift> tmpDSCa = ThamSo.DSCa;

            DataTable table          = SqlDataAccessHelper.ExecuteQueryString(ThamSo.queryDSLichTrinh, null, null);
            int       tempScheduleID = -1;

            foreach (DataRow dataRow in table.Rows)
            {
                if (tempScheduleID == -1)
                {
                    tempScheduleID = (int)dataRow["SchID"];
                }
                else
                {
                    if (tempScheduleID == (int)dataRow["SchID"])
                    {
                        continue;
                    }
                    else
                    {
                        tempScheduleID = (int)dataRow["SchID"];
                    }
                }

                //= (int)dataRow["SchID"]; // tempT1, tempT2, tempT3, tempT4, tempT5, tempT6, tempT7;
                DataRow[]      arrSubRecord = table.Select("SchID = " + tempScheduleID, string.Empty, DataViewRowState.CurrentRows);
                cShiftSchedule tmpLichTrinh = new cShiftSchedule()
                {
                    SchID = tempScheduleID
                };
                tmpLichTrinh.ListT1 = new List <cShift>();
                tmpLichTrinh.ListT2 = new List <cShift>();
                tmpLichTrinh.ListT3 = new List <cShift>();
                tmpLichTrinh.ListT4 = new List <cShift>();
                tmpLichTrinh.ListT5 = new List <cShift>();
                tmpLichTrinh.ListT6 = new List <cShift>();
                tmpLichTrinh.ListT7 = new List <cShift>();
                foreach (DataRow subRecord in arrSubRecord)
                {
                    int    tempTChungCho1Hang = (int)subRecord["T1"]; // tempT1, tempT2, tempT3, tempT4, tempT5, tempT6, tempT7;
                    cShift tempShift          = tmpDSCa.Find(item => item.ShiftID == tempTChungCho1Hang);

                    tmpLichTrinh.ListT1.Add(tempShift);
                    tmpLichTrinh.ListT2.Add(tempShift);
                    tmpLichTrinh.ListT3.Add(tempShift);
                    tmpLichTrinh.ListT4.Add(tempShift);
                    tmpLichTrinh.ListT5.Add(tempShift);
                    tmpLichTrinh.ListT6.Add(tempShift);
                    tmpLichTrinh.ListT7.Add(tempShift);
                }
                ThamSo.DSLichTrinh.Add(tmpLichTrinh);
            }
        }
Esempio n. 5
0
 public static void XetCa_1_CIO_V(cCheckInOut chkInOutV, cShiftSchedule lichtrinh)
 {
 }
Esempio n. 6
0
        public static void ChuanBiDSLichTrinhVaCa()
        {
            XL.DSCaMoRong.Clear();
            XL.DSCa.Clear();

            //lấy danh sách tất cả các ca
            var        tableDSCa = DAO5.LayDSCa();
            List <cCa> tempList  = new List <cCa>();

            foreach (DataRow row in tableDSCa.Rows)
            {
                #region transfer dữ liệu từ row sang đối tượng
                var iShiftID   = (int)row["ShiftID"];
                var sShiftCode = row["ShiftCode"].ToString();

                TimeSpan tsOnDuty;
                TimeSpan.TryParse(row["Onduty"].ToString(), out tsOnDuty);
                TimeSpan tOffDuty;
                TimeSpan.TryParse(row["Offduty"].ToString(), out tOffDuty);
                var iDayCount = (int)row["DayCount"];
                tOffDuty = tOffDuty.Add(new TimeSpan(iDayCount, 0, 0, 0));
                TimeSpan timespanStartNightTime, timespanEndddNightTime;
                if (row["StartNT"] == DBNull.Value || TimeSpan.TryParse(row["StartNT"].ToString(), out timespanStartNightTime) == false)
                {
                    timespanStartNightTime = XL2._22h00;                                                                                                                                     //ver 4.0.0.4
                }
                if (row["EndNT"] == DBNull.Value || TimeSpan.TryParse(row["EndNT"].ToString(), out timespanEndddNightTime) == false)
                {
                    timespanEndddNightTime = XL2._06h00;                                                                                                                                 //ver 4.0.0.4
                }
                var tOnLunch  = XL2._0gio;
                var tOffLunch = XL2._0gio;
                if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value)
                {
                    TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch);
                    TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch);
                }
                var LunchMin = tOffLunch.Subtract(tOnLunch);

                var tempWorkingTime = int.Parse(row["WorkingTime"].ToString());
                var kyhieucc        = row["KyHieuCC"].ToString();
                var tachcadem       = (row["IsSplited"] != DBNull.Value) && (bool)row["IsSplited"];
                var idCaTruoc       = (row["ShiftID1"] != DBNull.Value) ? (int)row["ShiftID1"] : -1;
                var idCaSauuu       = (row["ShiftID2"] != DBNull.Value) ? (int)row["ShiftID2"] : -1;
                var isextend        = (row["IsExtended"] != DBNull.Value) && (bool)row["IsExtended"];
                var tempShift       = new cCa {
                    ID       = iShiftID,
                    Code     = sShiftCode,
                    TOD_Duty = new TS {
                        Onn = tsOnDuty, Off = tOffDuty
                    },
                    PhutOnnInn         = (int)row["OnTimeIn"],
                    PhutCutInn         = (int)row["CutIn"],
                    PhutOnnOut         = (int)row["OnTimeOut"],
                    PhutCutOut         = (int)row["CutOut"],
                    PhutToiThieuTinhOT = (int)row["AfterOT"],
                    PhutChoTre         = (int)row["LateGrace"],
                    PhutChoSom         = (int)row["EarlyGrace"],
                    //LateeMin = tLateGrace,
                    //EarlyMin = tEarlyGrace,
                    Workingday    = (Single)row["Workingday"],
                    WorkingTimeTS = new TimeSpan(0, tempWorkingTime, 0),
                    PhutNghiTrua  = Convert.ToInt32(LunchMin.TotalMinutes),
                    TachCaDem     = tachcadem,
                    idCaTruoc     = idCaTruoc,
                    idCaSauuu     = idCaSauuu,
                    KyHieuCC      = kyhieucc,
                    MoTa          = row["Description"].ToString(),
                    IsExtended    = isextend,
                    TOD_NightTime = new TS {
                        Onn = timespanStartNightTime, Off = timespanEndddNightTime
                    }
                };
                //tempShift.TOD_NhanDienVao = new TS { Onn = tempShift.ThoiDiemOnnInn(), Off = tod_CutIn },
                //tempShift.TOD_NhanDienRaa = new TS { Onn = tod_OnTimeOut, Off = tod_CutOut },
                #endregion

                tempList.Add(tempShift);
            }
            // ra khỏi vòng lặp,ca 3&1, ca 3&1A chưa cập nhật ca trước, ca sau--> cập nhật
            #region update lại ca tách qua đêm trong ds ca
            foreach (cCa ca in tempList.Where(item => item.TachCaDem))
            {
                var catruoc = tempList.Find(item => item.ID == ca.idCaTruoc);
                var casauuu = tempList.Find(item => item.ID == ca.idCaSauuu);
                ca.catruoc = catruoc;
                ca.casauuu = casauuu;
            }
            #endregion

            // có được toàn bộ ds ca --> gán cho DSCa toàn cục, DSCaMR toàn cục
            XL.DSCa       = tempList;
            XL.DSCaMoRong = tempList.Where(item => item.IsExtended).ToList();
            //DSCaMoRong chỉ bao gồm các ca ghép Ca1&2A, Ca1B&2, mỗi ca có caTrước caSau

            // gán lịch trình
            XL.DSLichTrinh.Clear();
            // lấy danh sách lịch trình, mỗi dòng là 1 ca thuộc lịch trình => để duyệt từng lịch trình thì phải lấy dicstint
            var tableLichTrinh   = DAO5.LayDSLichTrinh();
            var arrRows_Distinct = (from DataRow row in tableLichTrinh.Rows
                                    select new { SchID = (int)(row["SchID"]), SchName = row["SchName"].ToString() })
                                   .Distinct();
            foreach (var row in arrRows_Distinct)
            {
                var arrRows1  = tableLichTrinh.Select("SchID=" + row.SchID, "");
                var lichtrinh = new cShiftSchedule {
                    SchID        = row.SchID,
                    TenLichTrinh = row.SchName,
                    DSCaThu      = new List <List <cCa> >(7),
                    DSCaMRThu    = new List <List <cCa> >(7),
                };
                // mỗi lịch trình chứa 7T, mỗi T là 1 danh sách ca
                for (int i = 0; i < 7; i++)
                {
                    lichtrinh.DSCaThu.Add(new List <cCa>());
                    lichtrinh.DSCaMRThu.Add(new List <cCa>());
                }
                foreach (var row1 in arrRows1)
                {
                    for (int i = 0; i < 7; i++)
                    {
                        if (row1["T" + (i + 1)] == DBNull.Value)
                        {
                            continue;
                        }
                        var shiftid = (int)row1["T" + (i + 1)];
                        var ca      = XL.DSCa.Find(o => o.ID == shiftid);
                        if (ca != null)
                        {
                            lichtrinh.DSCaThu[i].Add(ca);
                        }
                    }
                }
                for (int i = 0; i < 7; i++)
                {
                    List <cCa> dscathu = lichtrinh.DSCaThu[i];
                    foreach (var ca in from ca in XL.DSCaMoRong
                             let catruoc = ca.catruoc
                                           let casauuu = ca.casauuu
                                                         where dscathu.Exists(item => item.ID == catruoc.ID) &&
                                                         dscathu.Exists(item => item.ID == casauuu.ID)
                                                         select ca)
                    {
                        lichtrinh.DSCaMRThu[i].Add(ca);
                    }
                }
                //var ca3 = lichtrinh.DSCaThu[0].FirstOrDefault(o => o.QuaDem && Math.Abs(o.Workingday - 1f) < 0.01f);//ver 4.0.0.4 //xác định ca 3 có giờ qua đêm 21h45 hay 22 giờ để gán
                //if (ca3 == null) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4
                //else if (ca3.StartNT == XL2._21h45) lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._21h45;//ver 4.0.0.4
                //else lichtrinh.TGLamDemTheoQuyDinh = TGLamDemTheoQuyDinh._22h00;//ver 4.0.0.4
                XL.DSLichTrinh.Add(lichtrinh);
            }


            if (XL.DSLichTrinh.Count == 0)
            {
                throw new NullReferenceException("Không có ds lịch trình");
            }
        }
Esempio n. 7
0
 public static void XetCa_1_CIO_A_KoTachCa(cCheckInOut CIO, cShiftSchedule lichtrinh)
 {
 }
Esempio n. 8
0
 public static void XetCa_ListCIO_A3(List <cCheckInOut> ds_CIO_A, cShiftSchedule lichtrinh, List <cCheck> ds_raa3_vao1, List <cCheck> ds_check_A)
 {
 }
Esempio n. 9
0
        private void ChuanBiDSLichTrinhVaCa()
        {
            XL.DSLichTrinh.Clear();
            XL.DSCa.Clear();
            XL.DSCaMoRong.Clear();

            // lấy danh sách lịch trình, mỗi dòng là 1 ca thuộc lịch trình => để duyệt từng lịch trình thì phải lấy dicstint
            var tableLichTrinh = DAL.LayDSLichTrinh();
            var tableDSCa      = DAL.LayDSCa();

            foreach (DataRow row in tableDSCa.Rows)
            {
                #region transfer dữ liệu từ row sang đối tượng
                var iShiftID   = (int)row["ShiftID"];
                var sShiftCode = row["ShiftCode"].ToString();

                TimeSpan tsOnDuty;
                TimeSpan.TryParse(row["Onduty"].ToString(), out tsOnDuty);
                TimeSpan tOffDuty;
                TimeSpan.TryParse(row["Offduty"].ToString(), out tOffDuty);
                var iDayCount = (int)row["DayCount"];
                tOffDuty = tOffDuty.Add(new TimeSpan(iDayCount, 0, 0, 0));

                var tOnTimeIn = tsOnDuty.Subtract(new TimeSpan(0, (int)row["OnTimeIn"], 0));
                var tCutIn    = tsOnDuty.Add(new TimeSpan(0, (int)row["CutIn"], 0));

                // phải add thêm 1 ngày daycount vì trong dữ liệu chỉ có chuỗi giờ thô : 05:45 không có ngày
                var tOnTimeOut = tOffDuty.Subtract(new TimeSpan(0, (int)row["OnTimeOut"], 0));
                var tCutOut    = tOffDuty.Add(new TimeSpan(0, (int)row["CutOut"], 0));

                var tAfterOT    = new TimeSpan(0, (int)row["AfterOT"], 0);
                var tLateGrace  = new TimeSpan(0, (int)row["LateGrace"], 0);
                var tEarlyGrace = new TimeSpan(0, (int)row["EarlyGrace"], 0);

                var tOnLunch  = XL2._0gio;
                var tOffLunch = XL2._0gio;
                if (row["OnLunch"] != DBNull.Value && row["OffLunch"] != DBNull.Value)
                {
                    TimeSpan.TryParse(row["OnLunch"].ToString(), out tOnLunch);
                    TimeSpan.TryParse(row["OffLunch"].ToString(), out tOffLunch);
                }

                var iShowPosition   = (int)row["ShowPosition"];
                var tempWorkingTime = int.Parse(row["WorkingTime"].ToString());
                var kyhieucc        = row["KyHieuCC"].ToString();
                var tempShift       = new cCaChuan {
                    ID              = iShiftID,
                    Code            = sShiftCode,
                    DayCount        = iDayCount,
                    QuaDem          = (iDayCount == 1),
                    OnnTS           = tsOnDuty,
                    OffTS           = tOffDuty,
                    OnnInnTS        = tOnTimeIn,
                    CutInnTS        = tCutIn,
                    OnnOutTS        = tOnTimeOut,
                    CutOutTS        = tCutOut,
                    AfterOTMin      = tAfterOT,
                    LateeMin        = tLateGrace,
                    EarlyMin        = tEarlyGrace,
                    Workingday      = (Single)row["Workingday"],
                    ShowPosition    = iShowPosition,
                    WorkingTimeTS   = new TimeSpan(0, tempWorkingTime, 0),
                    chophepTreTS    = tsOnDuty.Add(tLateGrace),
                    chophepSomTS    = tOffDuty - tEarlyGrace,
                    batdaulamthemTS = tOffDuty + tAfterOT,                    //[TBD] thay tOffDuty + XL2._30phut thành tempOffDuty + tempAfterOT --> đã thay
                    LunchMin        = tOffLunch.Subtract(tOnLunch),
                    KyHieuCC        = kyhieucc,
                };
                #endregion

                XL.DSCa.Add(tempShift);
            }
            var ca3va1 = XL.DSCa.Find(o => o.OnnTS == XL2._21h45 && o.Workingday == 2f);
            if (ca3va1 != null)
            {
                ca3va1.TachCa = true;
                var ca3 = XL.DSCa.Find(o => o.OnnTS == XL2._21h45 && o.Workingday == 1f);
                var ca1 = XL.DSCa.Find(o => o.OnnTS == XL2._05h45 && o.Workingday == 1f);
                ((cCaChuan)ca3va1).catruoc = ca3 as cCaChuan;
                ((cCaChuan)ca3va1).casauuu = ca1 as cCaChuan;
            }


            IEnumerable <DataRow> arrRows = tableLichTrinh.Rows.Cast <DataRow>();
            var arrRows_Distinct          = (from row in arrRows select new { a = (int)(row["SchID"]), b = row["SchName"].ToString() }).Distinct();
            foreach (var row in arrRows_Distinct)
            {
                var arrRows1  = tableLichTrinh.Select("SchID=" + row.a, "");
                var lichtrinh = new cShiftSchedule {
                    SchID = row.a, TenLichTrinh = row.b, DSCa = new List <cCaAbs>(), DSCaMoRong = new List <cCaAbs>()
                };
                foreach (var row1 in arrRows1)
                {
                    var shiftid = (int)row1["T1"];
                    var ca      = XL.DSCa.Find(o => o.ID == shiftid);
                    if (ca != null)
                    {
                        lichtrinh.DSCa.Add(ca);
                    }
                }
                lichtrinh.DSCaMoRong = XL.TaoDSCaMoRong(lichtrinh.DSCa);
                XL.DSLichTrinh.Add(lichtrinh);
            }


            if (XL.DSLichTrinh.Count == 0)
            {
                throw new NullReferenceException("Không có ds lịch trình");
            }
        }