/// <summary>
        /// Get Detail of HolidayCalendar year.
        /// </summary>
        /// <param name="year">The target holiday year.</param>
        /// <returns></returns>
        public HolidayCalendarViewModel GetDetail(string year)
        {
            var result = new HolidayCalendarViewModel {
                Year = year
            };
            var data = _unitOfWork.GetRepository <HolidayCalendar>().GetCache(x => x.Year == year);

            foreach (var item in data)
            {
                result.HolidayList.Add(new HolidayCalendarDetail
                {
                    HolidayDateString = UtilityService.DateTimeToString(item.HolidayDate.Value, ConstantValue.DateTimeFormat),
                    Description       = item.Description
                });
            }
            return(result);
        }
        /// <summary>
        /// Update holiday calendar year.
        /// </summary>
        /// <param name="model">The holiday calendar information value.</param>
        /// <returns></returns>
        public ResultViewModel Edit(HolidayCalendarViewModel model)
        {
            var result = new ResultViewModel();

            using (TransactionScope scope = new TransactionScope())
            {
                var data          = _unitOfWork.GetRepository <HolidayCalendar>().GetCache(x => x.Year == model.Year);
                var addHoliday    = new List <HolidayCalendar>();
                var updateHoliday = new List <HolidayCalendar>();

                this.InitialEditHolidayCalendar(model.Year, model.HolidayList, data, updateHoliday, addHoliday);

                var deleteHoliday = data.Where(x => !updateHoliday.Any(y => x.Id == y.Id)).ToList();

                _unitOfWork.GetRepository <HolidayCalendar>().AddRange(addHoliday);
                _unitOfWork.GetRepository <HolidayCalendar>().UpdateRange(updateHoliday);
                _unitOfWork.GetRepository <HolidayCalendar>().RemoveRange(deleteHoliday);
                _unitOfWork.Complete(scope);
            }
            this.ReloadCacheHolidayCalendar();
            return(result);
        }
        /// <summary>
        /// Insert new holiday canlendar.
        /// </summary>
        /// <param name="model">The holiday calendar information value.</param>
        /// <returns></returns>
        public ResultViewModel Save(HolidayCalendarViewModel model)
        {
            var result = new ResultViewModel();

            using (TransactionScope scope = new TransactionScope())
            {
                var data = new List <HolidayCalendar>();
                foreach (var item in model.HolidayList)
                {
                    data.Add(new HolidayCalendar
                    {
                        Year        = model.Year,
                        HolidayDate = UtilityService.ConvertToDateTime(item.HolidayDateString, ConstantValue.DateTimeFormat),
                        Description = item.Description,
                        CreateBy    = _token.EmpNo,
                        CreateDate  = DateTime.Now
                    });
                }
                _unitOfWork.GetRepository <HolidayCalendar>().AddRange(data);
                _unitOfWork.Complete(scope);
            }
            this.ReloadCacheHolidayCalendar();
            return(result);
        }
 public IActionResult Edit([FromBody] HolidayCalendarViewModel model)
 {
     return(Ok(_holidayCalendar.Edit(model)));
 }