Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="recordId"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="listLogs"></param>
        private void UpdateTimeLogs(int recordId, DateTime startDate, DateTime endDate, List <hr_TimeSheetLog> listLogs)
        {
            //Check if not save log into DB => create else update
            var condition = Constant.ConditionDefault;

            condition += " AND [RecordId] = {0}".FormatWith(recordId) +
                         " AND [StartDate] >= '{0}'".FormatWith(startDate.ToString("yyyy-MM-dd")) +
                         " AND [StartDate] <= '{0}'".FormatWith(endDate.AddDays(1).ToString("yyyy-MM-dd"));

            var checkTimeSheet = hr_TimeSheetServices.GetByCondition(condition);
            var timeLogs       = string.Join(" | ", listLogs.Select(d => d.TimeDate.ToString("HH:mm:ss")).ToArray());

            if (checkTimeSheet == null)
            {
                var timeSheet = new hr_TimeSheet()
                {
                    RecordId    = recordId,
                    StartDate   = startDate,
                    EndDate     = endDate,
                    CreatedDate = DateTime.Now,
                    TimeLogs    = timeLogs
                };
                hr_TimeSheetServices.Create(timeSheet);
            }
            else
            {
                checkTimeSheet.RecordId   = recordId;
                checkTimeSheet.TimeLogs   = timeLogs;
                checkTimeSheet.StartDate  = startDate;
                checkTimeSheet.EndDate    = endDate;
                checkTimeSheet.EditedDate = DateTime.Now;
                hr_TimeSheetServices.Update(checkTimeSheet);
            }
        }
Пример #2
0
        /// <summary>
        /// update save DB
        /// </summary>
        /// <param name="timeSheet"></param>
        private void UpdateTimeSheet(hr_TimeSheet timeSheet)
        {
            var events = hr_TimeSheetEventServices.GetAllEventsByTimeSheetId(timeSheet.Id, EventStatus.Active);

            EditWorkConvertTimeSheet(events, timeSheet);
            timeSheet.Detail = events.ToJson();
            hr_TimeSheetServices.Update(timeSheet);
        }
Пример #3
0
        /// <summary>
        /// update save DB
        /// </summary>
        /// <param name="timeSheet"></param>
        private void UpdateTimeSheet(hr_TimeSheet timeSheet)
        {
            var events = hr_TimeSheetEventServices.GetAllEventsByCondition(timeSheet.Id, EventStatus.Active, null);

            EditWorkConvertTimeSheet(events, timeSheet);
            timeSheet.Detail     = events.ToJson();
            timeSheet.EditedDate = DateTime.Now;
            hr_TimeSheetServices.Update(timeSheet);
        }
Пример #4
0
        /// <summary>
        /// Chấm công theo ngày
        /// </summary>
        private void SaveTimeSheetForDay(object sender, DirectEventArgs e)
        {
            try
            {
                var timeSheetEvent = new hr_TimeSheetEvent();
                var timeSheetId    = 0;//Id bang cham cong
                if (!string.IsNullOrEmpty(hdfTimeSheetId.Text))
                {
                    timeSheetId = Convert.ToInt32(hdfTimeSheetId.Text);
                    if (timeSheetId == 0)
                    {
                        var timeSheet = new hr_TimeSheet();
                        if (!string.IsNullOrEmpty(hdfDay.Text))
                        {
                            timeSheet.Day = Convert.ToInt32(hdfDay.Text);
                        }
                        if (!string.IsNullOrEmpty(hdfMonth.Text))
                        {
                            timeSheet.Month = Convert.ToInt32(hdfMonth.Text);
                        }
                        if (!string.IsNullOrEmpty(hdfYear.Text))
                        {
                            timeSheet.Year = Convert.ToInt32(hdfYear.Text);
                        }
                        timeSheet.CreatedDate = DateTime.Now;
                        timeSheet.Detail      = " ";
                        if (!string.IsNullOrEmpty(hdfRecordId.Text))
                        {
                            timeSheet.RecordId = Convert.ToInt32(hdfRecordId.Text);
                        }
                        timeSheet.TimeSheetCode = hdfTimeSheetCode.Text;
                        hr_TimeSheetServices.Create(timeSheet);
                        timeSheetEvent.TimeSheetId = timeSheet.Id;
                        timeSheetId = timeSheet.Id;
                    }
                    else
                    {
                        timeSheetEvent.TimeSheetId = timeSheetId;
                    }
                }
                timeSheetEvent.CreatedDate = DateTime.Now;
                //Add moi event
                AddNewTimeSheetEvent(timeSheetEvent);

                var timeSheetEdit = hr_TimeSheetServices.GetById(timeSheetId);
                //update timesheet
                UpdateTimeSheet(timeSheetEdit);
            }
            catch (Exception ex)
            {
                Dialog.ShowNotification("Có lỗi xảy ra" + ex.Message);
            }
        }
Пример #5
0
        /// <summary>
        /// Edit work by day
        /// </summary>
        /// <param name="events"></param>
        /// <param name="timeSheet"></param>
        private void EditWorkConvertTimeSheet(List <hr_TimeSheetEvent> events, hr_TimeSheet timeSheet)
        {
            var workConvert  = 0.0;
            var moneyConvert = 0.0;

            foreach (var itemEvent in events)
            {
                workConvert  += itemEvent.WorkConvert;
                moneyConvert += itemEvent.MoneyConvert;
            }
            timeSheet.WorkConvert  = workConvert;
            timeSheet.MoneyConvert = moneyConvert;
        }
Пример #6
0
 private void EditDataTimeSheet(hr_TimeSheet timeSheet, hr_TimeSheetCode code)
 {
     if (!string.IsNullOrEmpty(hdfMonth.Text))
     {
         timeSheet.Month = Convert.ToInt32(hdfMonth.Text);
     }
     if (!string.IsNullOrEmpty(hdfYear.Text))
     {
         timeSheet.Year = Convert.ToInt32(hdfYear.Text);
     }
     timeSheet.RecordId      = code.RecordId;
     timeSheet.TimeSheetCode = code.Code;
     timeSheet.CreatedDate   = DateTime.Now;
     timeSheet.Detail        = "Bình thường";
 }
Пример #7
0
        /// <summary>
        /// Add moi timeSheetEvent
        /// </summary>
        /// <param name="timeSheetEvent"></param>
        private void AddNewTimeSheetEvent(hr_TimeSheet timeSheet, hr_TimeSheetEvent timeSheetEvent, int recordId)
        {
            var rowSelecteds = RowSelectionModel2.SelectedRows;

            if (rowSelecteds != null && rowSelecteds.Count > 0)
            {
                //Lay thong tin tu bang ky hieu cham cong cat_TimeSheetSymbol
                foreach (var item in rowSelecteds)
                {
                    var timeSymbol = cat_TimeSheetSymbolServices.GetById(int.Parse("0" + item.RecordID));
                    if (timeSymbol != null)
                    {
                        timeSheetEvent.SymbolDisplay = "<span class='badge badge-normal' title='{1}' >{0}</span>".FormatWith(timeSymbol.Code, timeSymbol.Name);
                        CreateNewTimeSheetEvent(timeSheetEvent, timeSymbol);
                        timeSheet.OverTimeConvert += timeSymbol.TimeConvert;
                    }
                }
            }
        }
Пример #8
0
        /// <summary>
        /// Edit work by day
        /// </summary>
        /// <param name="events"></param>
        /// <param name="timeSheet"></param>
        private void EditWorkConvertTimeSheet(List <hr_TimeSheetEvent> events, hr_TimeSheet timeSheet)
        {
            var workConvert  = 0.0;
            var moneyConvert = 0.0;
            var timeConvert  = 0.0;

            foreach (var itemEvent in events)
            {
                workConvert  += itemEvent.WorkConvert;
                moneyConvert += itemEvent.MoneyConvert;
                if (itemEvent.TimeConvert != null && itemEvent.TypeGroup == ConstOverTime)
                {
                    timeConvert += itemEvent.TimeConvert.Value;
                }
            }

            timeSheet.WorkConvert     = workConvert;
            timeSheet.MoneyConvert    = moneyConvert;
            timeSheet.OverTimeConvert = timeConvert;
        }
Пример #9
0
        private void UpdateAnnualLeaveConfig(hr_TimeSheet timeSheet, hr_AnnualLeaveHistory annual)
        {
            //update nguoc lai bang phep
            var leaveConfig =
                hr_AnnualLeaveConfigureServices.GetAnnualLeaveConfigByRecordId(
                    timeSheet.RecordId, annual.UsedLeaveDate.Year);

            if (leaveConfig != null)
            {
                leaveConfig.UsedLeaveDay = annual.UsedLeaveDay + leaveConfig.UsedLeaveDay;
                if (leaveConfig.AnnualLeaveDay > 0)
                {
                    leaveConfig.RemainLeaveDay = leaveConfig.AnnualLeaveDay - leaveConfig.UsedLeaveDay;
                }

                leaveConfig.EditedDate = DateTime.Now;
                leaveConfig.EditedBy   = CurrentUser.User.UserName;
            }

            hr_AnnualLeaveConfigureServices.Update(leaveConfig);
        }
Пример #10
0
        /// <summary>
        /// Tạo bảng chấm công theo đơn vị lựa chọn
        /// </summary>
        /// <param name="timeReportId"></param>
        private void CreateTimeSheetByDepartment(int timeReportId)
        {
            var timeSheets = hr_TimeSheetServices.GetAllTimeSheets(Convert.ToInt32(hdfMonth.Text),
                                                                   Convert.ToInt32(hdfYear.Text), ConstTypeTimeSheet, null);

            if (!string.IsNullOrEmpty(hdfDepartmentId.Text))
            {
                var rootId       = 0;
                var rootParentId = 0;
                int parseId;
                var selectedDepartment = "{0},".FormatWith(hdfDepartmentId.Text);
                if (int.TryParse(hdfDepartmentId.Text, out parseId))
                {
                    rootId = parseId;
                }

                var objDept = CurrentUser.RootDepartment;
                if (objDept != null)
                {
                    rootParentId = objDept.Id;
                }

                var lstDepartment = cat_DepartmentServices.GetTree(rootId).Select(d => d.Id).ToList();
                if (lstDepartment.Count > 0)
                {
                    selectedDepartment = lstDepartment.Aggregate(selectedDepartment, (current, d) => current + "{0},".FormatWith(d));
                }

                if (rootId != rootParentId)
                {
                    selectedDepartment = "{0}".FormatWith(selectedDepartment.TrimEnd(','));
                }
                else
                {
                    selectedDepartment = "{0}".FormatWith(selectedDepartment.TrimEnd(',').Remove(0, 2));
                }

                //Get list employee by department selected
                var listEmp = hr_RecordServices.GetAllEmployee(selectedDepartment, null, null, null).Select(d => d.Id).ToList();

                if (listEmp.Count > 0)
                {
                    foreach (var item in timeSheets)
                    {
                        if (listEmp.Contains(item.RecordId))
                        {
                            var newTimeSheet = new hr_TimeSheet();
                            newTimeSheet = item;
                            newTimeSheet.TimeSheetReportId = timeReportId;
                            newTimeSheet.CreatedDate       = DateTime.Now;

                            //Create
                            hr_TimeSheetServices.Create(newTimeSheet);

                            var objEvent = JSON.Deserialize <List <TimeSheetEventModel> >(newTimeSheet.Detail);
                            //Create timeSheetEvent
                            foreach (var itemEvent in objEvent)
                            {
                                var timeEvent = new hr_TimeSheetEvent()
                                {
                                    StatusId      = EventStatus.Active,
                                    TypeGroup     = itemEvent.TypeGroup,
                                    Description   = itemEvent.Description,
                                    WorkConvert   = itemEvent.WorkConvert,
                                    MoneyConvert  = itemEvent.MoneyConvert,
                                    TimeConvert   = itemEvent.TimeConvert,
                                    Symbol        = itemEvent.Symbol,
                                    SymbolDisplay = itemEvent.SymbolDisplay,
                                };

                                timeEvent.TimeSheetId = newTimeSheet.Id;
                                timeEvent.CreatedDate = DateTime.Now;
                                timeEvent.CreatedBy   = CurrentUser.User.UserName;

                                hr_TimeSheetEventServices.Create(timeEvent);
                            }

                            //update timesheet
                            UpdateTimeSheet(newTimeSheet);
                        }
                    }
                }
            }
        }
Пример #11
0
        /// <summary>
        /// Chấm công ngày hôm nay cho tất cả nhân viên
        /// </summary>
        private void SaveTimeSheetAllEmployee(object sender, DirectEventArgs e)
        {
            try
            {
                //Chọn ngày
                if (groupPaySalaryAllEmp.CheckedItems.Count <= 0)
                {
                    return;
                }
                var departments   = hdfDepartments.Text;
                var month         = int.Parse(hdfMonth.Text);
                var year          = int.Parse(hdfYear.Text);
                var arrDepartment = string.IsNullOrEmpty(departments) ? new string[] { } : departments.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                for (var j = 0; j < arrDepartment.Length; j++)
                {
                    arrDepartment[j] = "'{0}'".FormatWith(arrDepartment[j]);
                }
                //Lay tat ca ma cham cong de duyet
                var lstTimeSheetCode = hr_TimeSheetCodeServices.GetTimeSheetCodes(string.Join(",", arrDepartment), null, null, null, null);

                // Lấy tất cả các bản ghi trong bảng timesheet theo mã nhân viên, tháng, năm
                var timeSheetCodes = string.Join(",", lstTimeSheetCode.Select(code => code.RecordId));
                var arrCodes       = string.IsNullOrEmpty(timeSheetCodes) ? new string[] { } : timeSheetCodes.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                for (var j = 0; j < arrCodes.Length; j++)
                {
                    arrCodes[j] = "'{0}'".FormatWith(arrCodes[j]);
                }
                var timeReportId = 0;
                if (!string.IsNullOrEmpty(hdfTimeSheetReportId.Text))
                {
                    timeReportId = Convert.ToInt32(hdfTimeSheetReportId.Text);
                }
                var lstTimesheet = hr_TimeSheetServices.GetByMonth(string.Join(",", arrCodes), month, year, null, timeReportId);
                var startDate    = timeSheetFromDate.SelectedDate;
                var endDate      = timeSheetToDate.SelectedDate;

                //Voi moi ma cham cong lay timesheet
                foreach (var code in lstTimeSheetCode)
                {
                    for (var i = startDate.Day; i <= endDate.Day; i++)
                    {
                        var date    = new DateTime(timeSheetFromDate.SelectedDate.Year, timeSheetFromDate.SelectedDate.Month, i);
                        var typeDay = string.Empty;
                        //Bo nghi le tet
                        //Lay danh sach ngay nghi le tet
                        //Kiem tra xem ngay do co phai la ngay le khong. Neu la ngay le thi bo qua khong di dang ky
                        if (chkTetHoliday.Checked)
                        {
                            var holiday   = cat_HolidayServices.GetAll();
                            var isProcess = false;
                            foreach (var itemHoliday in holiday)
                            {
                                if (itemHoliday.DaySolar == i &&
                                    itemHoliday.MonthSolar == timeSheetFromDate.SelectedDate.Month &&
                                    itemHoliday.YearSolar == timeSheetFromDate.SelectedDate.Year)
                                {
                                    isProcess = true;
                                }
                            }
                            if (isProcess)
                            {
                                continue;
                            }
                        }

                        if (chkSaturday.Checked && date.DayOfWeek.ToString() == "Saturday") //Nếu chọn thứ 7
                        {
                            typeDay = "Saturday";
                        }
                        if (!chkSaturday.Checked && date.DayOfWeek.ToString() == "Saturday") //Nếu chọn thứ 7
                        {
                            continue;
                        }

                        //Nếu chọn CN
                        if (chkSunday.Checked && date.DayOfWeek.ToString() == "Sunday")
                        {
                            typeDay = "Sunday";
                        }
                        if (!chkSunday.Checked && date.DayOfWeek.ToString() == "Sunday")
                        {
                            continue;
                        }
                        var item        = lstTimesheet.FirstOrDefault(ts => ts.RecordId == code.RecordId && ts.Day == i);
                        var timeSheetId = 0;

                        //TH timeSheet khac null cap nhat lai theo event duoc add moi vao
                        if (item != null)
                        {
                            timeSheetId = item.Id;
                            //Add moi timeSheetEvent
                            CreatNewTimeSheetEvent(item.Id, typeDay);
                        }
                        else
                        {
                            //TH timeSheet null -> tao moi
                            var timeSheet = new hr_TimeSheet();
                            EditDataTimeSheet(timeSheet, code);
                            timeSheet.Day = i;
                            if (!string.IsNullOrEmpty(hdfTimeSheetReportId.Text))
                            {
                                timeSheet.TimeSheetReportId = Convert.ToInt32(hdfTimeSheetReportId.Text);
                            }
                            hr_TimeSheetServices.Create(timeSheet);

                            if (timeSheet.Id > 0)
                            {
                                timeSheetId = timeSheet.Id;
                                //Add moi timeSheetEvent
                                CreatNewTimeSheetEvent(timeSheet.Id, typeDay);
                            }
                        }

                        var timeSheetEdit = hr_TimeSheetServices.GetById(timeSheetId);
                        //update timesheet
                        UpdateTimeSheet(timeSheetEdit);
                    }
                }
            }
            catch (Exception ex)
            {
                Dialog.ShowNotification("Có lỗi xảy ra" + ex.Message);
            }
        }
Пример #12
0
        /// <summary>
        /// Chấm công theo ngày
        /// </summary>
        private void SaveTimeSheetForDay(object sender, DirectEventArgs e)
        {
            try
            {
                var listId = e.ExtraParams["ListRecordId"].Split(',');

                if (startDate.SelectedValue == null)
                {
                    ExtNet.Msg.Alert("Thông báo", "Bạn chưa chọn ngày cần hiệu chỉnh").Show();
                    return;
                }

                var day   = startDate.SelectedDate.Day;
                var month = startDate.SelectedDate.Month;
                var year  = startDate.SelectedDate.Year;

                for (var i = 0; i < listId.Length - 1; i++)
                {
                    var recordId = listId[i];
                    //Lay ma cham cong theo recordId
                    var timeSheetCode = GetTimeSheetCode(recordId);

                    if (timeSheetCode != null)
                    {
                        var timeSheet = hr_TimeSheetServices.GetTimeSheetByCondition(day, month, year, Convert.ToInt32(recordId), Convert.ToInt32(hdfTimeSheetReport.Text), TypeTimeSheet);
                        if (timeSheet != null)
                        {
                            var timeSheetEvent = new hr_TimeSheetEvent
                            {
                                TimeSheetId = timeSheet.Id,
                                StatusId    = EventStatus.Active,
                                CreatedDate = DateTime.Now,
                                CreatedBy   = CurrentUser.User.UserName
                            };
                            //Add moi event
                            AddNewTimeSheetEvent(timeSheetEvent, Convert.ToInt32(recordId));
                            var events = hr_TimeSheetEventServices.GetAllEventsByTimeSheetId(timeSheet.Id, EventStatus.Active);
                            //update timesheet
                            timeSheet.Detail = events.ToJson();
                            hr_TimeSheetServices.Update(timeSheet);
                        }
                        else
                        {
                            //create new timesheet by day selected
                            var newTimeSheet = new hr_TimeSheet()
                            {
                                RecordId      = Convert.ToInt32(recordId),
                                TimeSheetCode = timeSheetCode.Code,
                                Month         = month,
                                Year          = year,
                                Day           = day,
                                Detail        = " ",
                                CreatedDate   = DateTime.Now,
                                CreatedBy     = CurrentUser.User.UserName,
                                Type          = TypeTimeSheet,
                            };
                            hr_TimeSheetServices.Create(newTimeSheet);

                            var timeSheetEvent = new hr_TimeSheetEvent()
                            {
                                TimeSheetId = newTimeSheet.Id,
                                StatusId    = EventStatus.Active,
                                CreatedDate = DateTime.Now,
                                CreatedBy   = CurrentUser.User.UserName
                            };

                            //Add moi event
                            AddNewTimeSheetEvent(timeSheetEvent, Convert.ToInt32(recordId));
                            var events = hr_TimeSheetEventServices.GetAllEventsByTimeSheetId(newTimeSheet.Id, EventStatus.Active);
                            //update timesheet
                            newTimeSheet.Detail = events.ToJson();
                            hr_TimeSheetServices.Update(newTimeSheet);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Dialog.ShowNotification("Có lỗi xảy ra" + ex.Message);
            }
        }