예제 #1
0
        private void btnInput_Click(object sender, EventArgs e)
        {
            EmployeeWorkingsLogicEventArg eventArg = new EmployeeWorkingsLogicEventArg();
            eventArg.EmployeeId = txtEmployeeId.Text;
            EmployeeWorkingDay day = GetFromWorkingList(txtEmployeeId.Text, ewdList);
            if(day!=null)
            {
                eventArg.EmployeeWorkingDay = day;
            }

            WorkingDayStatus workingDayStatus = IsCheckOut(txtEmployeeId.Text, ewdList);
            // if not checking het or checking in
            if (   workingDayStatus== WorkingDayStatus.NotCheckingYet
                || workingDayStatus == WorkingDayStatus.CheckingIn )
            {
                // if manager check out
                if(ClientInfo.getInstance().LoggedUser.IsInRole(PosRole.Manager))
                {

                }

                EventUtility.fireEvent(SaveEmployeeWorkingDay, this, eventArg);
                if(eventArg.HasErrors)
                {
                    MessageBox.Show("Có lỗi khi quét mã vạch");
                }
                else
                {
                    MessageBox.Show("Có nhân viên quét thẻ ...");
                    if(eventArg.EmployeeWorkingDay!=null)
                    {
                        int listIndex = -1;
                        if(!UpdateEndTimeInList(ewdList,eventArg.EmployeeWorkingDay))
                        {
                            ewdList.Add(eventArg.EmployeeWorkingDay);
                        }

                        bdsEmployeeWorking.EndEdit();
                        dgvEmployeeWorking.Refresh();
                        dgvEmployeeWorking.Invalidate();
                    }
                }

            }
            else
            {
                MessageBox.Show("Nhân viên này đã check-out hoặc mã vạch rỗng");
            }
            ClearInput();
        }
        void employeeWorkingView_LoadEmployeesWorkingDay(object sender, EmployeeWorkingsLogicEventArg e)
        {
            ObjectCriteria wDayCrit = new ObjectCriteria();
            wDayCrit.AddEqCriteria("Department.DepartmentId", CurrentDepartment.Get().DepartmentId);
            wDayCrit.AddBetweenCriteria("EmployeeWorkingDayPK.WorkingDay", DateUtility.ZeroTime(DateTime.Now),
                                        DateUtility.MaxTime(DateTime.Now));

            IList wDayResult = EmployeeWorkingDayLogic.FindAll(wDayCrit);
            e.EmployeeWorkingList = wDayResult;
            if(wDayResult!=null && wDayResult.Count > 0)
            {
                foreach (EmployeeWorkingDay workingDay in wDayResult)
                {
                    ObjectCriteria criteria = new ObjectCriteria();
                    criteria.AddEqCriteria("EmployeePK.EmployeeId", workingDay.EmployeeWorkingDayPK.EmployeeId);
                    IList list = EmployeeLogic.FindAll(criteria);
                    workingDay.Employee = (Employee)list[0];
                }
            }
        }
예제 #3
0
        private void EmployeeWorkingsForm_Load(object sender, EventArgs e)
        {
            txtTime.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            ewdList = new EmployeeWorkingDaysCollection(bdsEmployeeWorking);

            EmployeeWorkingsLogicEventArg eventArg = new EmployeeWorkingsLogicEventArg();
            EventUtility.fireEvent(LoadEmployeesWorkingDay,this,eventArg);

            if(eventArg.EmployeeWorkingList != null && eventArg.EmployeeWorkingList.Count > 0)
            {
                foreach (EmployeeWorkingDay employeeWorkingDay in eventArg.EmployeeWorkingList)
                {
                    ewdList.Add(employeeWorkingDay);

                }
                bdsEmployeeWorking.EndEdit();
                dgvEmployeeWorking.Refresh();
                dgvEmployeeWorking.Invalidate();

            }
            timer1.Start();
        }
        void employeeWorkingView_SaveEmployeeWorkingDay(object sender, EmployeeWorkingsLogicEventArg e)
        {
            string barCode = e.EmployeeId;
            ObjectCriteria criteria = new ObjectCriteria();
            criteria.AddEqCriteria("Barcode", barCode);
            IList list = EmployeeInfoLogic.FindAll(criteria);
            if (list != null && list.Count == 1)
            {
                EmployeeInfo info = (EmployeeInfo)list[0];
                EmployeeWorkingDay workingDay = e.EmployeeWorkingDay;
                if (workingDay == null)
                {
                    workingDay = new EmployeeWorkingDay();
                    workingDay.CreateDate = DateTime.Now;
                    workingDay.CreateId = ClientInfo.getInstance().LoggedUser.Name;
                    workingDay.UpdateDate = DateTime.Now;
                    workingDay.UpdateId = ClientInfo.getInstance().LoggedUser.Name;
                    //workingDay.StartTime = DateTime.Now;

                    workingDay.EndTime = DateTime.MinValue;
                    workingDay.EmployeeWorkingDayPK = new EmployeeWorkingDayPK
                                                          {
                                                              //DepartmentId = CurrentDepartment.Get().DepartmentId,
                                                              EmployeeId = info.EmployeePK.EmployeeId,
                                                              WorkingDay = DateTime.Now
                                                          };

                    workingDay.Employee = info.Employee;
                    workingDay.Department = CurrentDepartment.Get();
                    workingDay.DelFlg = 0;
                    workingDay.ExclusiveKey = 1;
                }

                ObjectCriteria wDayCrit = new ObjectCriteria();
                wDayCrit.AddEqCriteria("Department.DepartmentId", workingDay.Department.DepartmentId);
                wDayCrit.AddEqCriteria("EmployeeWorkingDayPK.EmployeeId", workingDay.EmployeeWorkingDayPK.EmployeeId);
                wDayCrit.AddBetweenCriteria("EmployeeWorkingDayPK.WorkingDay", DateUtility.ZeroTime(DateTime.Now),
                                            DateUtility.MaxTime(DateTime.Now));

                IList wDayResult = EmployeeWorkingDayLogic.FindAll(wDayCrit);
                if (wDayResult == null || wDayResult.Count == 0)
                {
                    workingDay.StartTime = DateTime.Now;
                    EmployeeWorkingDayLogic.Add(workingDay);

                }
                else
                {
                    EmployeeWorkingDay currWDay = (EmployeeWorkingDay) wDayResult[0];
                    currWDay.EndTime = DateTime.Now;
                    workingDay.EndTime = currWDay.EndTime;
                    EmployeeWorkingDayLogic.Update(currWDay);

                }

                e.EmployeeWorkingDay = workingDay;

                e.HasErrors = false;
            }
            else
            {
                e.HasErrors = true;
                throw new BusinessException("Mã vạch của nhân viên không đúng");
            }
        }