예제 #1
0
        public async Task <HttpResponseMessage> ExportToExcel(HttpRequestMessage request, string userID, string groupID, string column, bool isDesc, int page, int pageSize, [FromBody] FilterOTRequestModel filter)
        {
            string fileName     = string.Concat(CommonConstants.FunctionOTList + DateTime.Now.ToString(CommonConstants.dateExport) + CommonConstants.fileExport);
            var    folderReport = ConfigHelper.GetByKey(CommonConstants.reportFolder);
            string fileTemplate = folderReport + CommonConstants.Link + fileName;
            string filePath     = HttpContext.Current.Server.MapPath(folderReport);

            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }
            string fullPath = Path.Combine(filePath, fileName);

            try
            {
                var model        = _otrequestService.GetAllOTFilter(userID, groupID, column, isDesc, filter);
                var responseData = Mapper.Map <List <ListOTModel>, List <OTListViewModel> >(model);
                for (int i = 0; i < model.Count; i++)
                {
                    responseData[i].FullName    = model[i].FullName;
                    responseData[i].Account     = model[i].UserName;
                    responseData[i].Group       = model[i].GroupName;
                    responseData[i].OTDate      = model[i].OTDate.Value.Date.ToString(CommonConstants.FormatDate_DDMMYYY);
                    responseData[i].OTDayType   = model[i].NameOTDateType;
                    responseData[i].OTTimeType  = model[i].NameOTDateTime;
                    responseData[i].OTCheckIn   = model[i].OTCheckIn;
                    responseData[i].OTCheckOut  = model[i].OTCheckOut;
                    responseData[i].WorkingTime = model[i].WorkingTime + CommonConstants.Hours;
                    responseData[i].Approver    = model[i].UpdatedByName;
                    responseData[i].Status      = model[i].StatusRequest;
                }
                await ReportHelper.GenerateXls(responseData, fullPath);

                return(request.CreateResponse(HttpStatusCode.OK, fileTemplate));
            }
            catch (Exception ex)
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
            }
        }
예제 #2
0
        public async Task <HttpResponseMessage> GetAllOtList(HttpRequestMessage request, string userID, string groupID, string column, bool isDesc, int page, int pageSize, [FromBody] FilterOTRequestModel filter)
        {
            Func <HttpResponseMessage> func = () =>
            {
                if (string.IsNullOrEmpty(userID) || string.IsNullOrEmpty(groupID))
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, nameof(userID) + MessageSystem.NoValues + nameof(groupID) + MessageSystem.NoValues));
                }
                var model = _otrequestService.GetAllOTFilter(userID, groupID, column, isDesc, filter);
                var data  = model.Skip((page - 1) * pageSize).Take(pageSize);
                //var data = string.IsNullOrEmpty(column) ? model.Skip((page - 1) * pageSize).Take(pageSize) : model.OrderByField(column, isDesc).Skip((page - 1) * pageSize).Take(pageSize);
                var paginationSet = new PaginationSet <ListOTModel>()
                {
                    Items     = data,
                    PageIndex = page,
                    TotalRows = model.Count(),
                    PageSize  = pageSize
                };
                return(request.CreateResponse(HttpStatusCode.OK, paginationSet));
            };

            return(await CreateHttpResponse(request, func));
        }
예제 #3
0
        /// <summary>
        /// Function Get OT Filter
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="groupId"></param>
        /// <param name="column"></param>
        /// <param name="isDesc"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public List <ListOTModel> GetAllOTFilter(string userID, string groupID, string column, bool isDesc, FilterOTRequestModel filter)
        {
            var model = GetAllWithUser(userID, groupID, filter);
            int year  = DateTime.Now.Year;
            int month = DateTime.Now.Month;
            int count = 0;

            foreach (var item in model)
            {
                if (string.IsNullOrEmpty(item.OTCheckIn) || string.IsNullOrEmpty(item.OTCheckOut) || item.OTCheckIn == "null" || item.OTCheckOut == "null")
                {
                    item.WorkingTime = 0;
                }
                else
                {
                    item.WorkingTime = Math.Round((Convert.ToDouble((TimeSpan.Parse(item.OTCheckOut)).TotalHours - TimeSpan.Parse(item.OTCheckIn).TotalHours)), 2);
                }
            }
            if (filter != null)
            {
                if (filter.OTDateType.Count() != 0)
                {
                    model = model.Where(x => filter.OTDateType.Contains(x.NameOTDateType.ToString()));
                    ++count;
                }
                if (filter.OTTimeType.Count() != 0)
                {
                    model = model.Where(x => filter.OTTimeType.Contains(x.NameOTDateTime.ToString()));
                    ++count;
                }

                if (!string.IsNullOrEmpty(filter.startDate) && !string.IsNullOrEmpty(filter.endDate))
                {
                    model = model.Where(x => (x.OTDate >= DateTime.ParseExact(filter.startDate, CommonConstants.FormatDate_MMDDYYY, CultureInfo.InvariantCulture)) &&
                                        (x.OTDate <= DateTime.ParseExact(filter.endDate, CommonConstants.FormatDate_MMDDYYY, CultureInfo.InvariantCulture)));
                    ++count;
                }
                if (filter.FullName.Count() != 0)
                {
                    model = model.Where(x => filter.FullName.Contains(x.UserName));
                    ++count;
                }
            }
            if (filter == null || count == 0)
            {
                model = model.Where(x => x.OTDate.Value.Month == month && x.OTDate.Value.Year == year);
            }
            return(model.OrderByField(column, isDesc).ToList());
            //return model.ToList();
        }
예제 #4
0
        /// <summary>
        /// Function Get All OT List
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="groupId"></param>
        /// <returns></returns>
        ///

        public IEnumerable <ListOTModel> GetAllWithUser(string userID, string groupID, FilterOTRequestModel filter)
        {
            if (_otrequestRepository.IsReadAll(userID, CommonConstants.FunctionOTList))
            {
                return(_otrequestRepository.GetAllUser(userID, groupID, true).OrderBy(x => x.FullName).Where(x => x.OTCheckIn != null && x.OTCheckOut != null && x.StatusRequest == CommonConstants.StatusApproved));
            }
            return(_otrequestRepository.GetAllUser(userID, groupID, false).OrderBy(x => x.OTDate).Where(x => x.OTCheckIn != null && x.OTCheckOut != null && x.StatusRequest == CommonConstants.StatusApproved));
        }
예제 #5
0
        /// <summary>
        /// Get OT Request By Filter condition
        ///
        /// </summary>
        /// <param name="userID">User ID</param>
        /// <param name="groupId">Group ID</param>
        /// <param name="column">Colunm want to sort</param>
        /// <param name="isDesc">Asc or Desc</param>
        /// <param name="filter">Filter Condition</param>
        /// <returns>OT Request List</returns>
        public IEnumerable <OTRequest> GetOTRequestFilter(string userID, string groupId, string column, bool isDesc, FilterOTRequestModel filter)
        {
            var model = GetAllOTRequestByUserOrGroup(userID, groupId);

            if (filter != null)
            {
                if (filter.StatusRequestType.Count() != 0) // Filter by Status Request ID
                {
                    model = model.Where(x => filter.StatusRequestType.Contains(x.StatusRequestID.ToString()));
                }
                if (filter.FullName.Count() != 0)
                {
                    model = model.Where(x => filter.FullName.Contains(x.AppUserCreatedBy.Id));
                }
                if (filter.OTDateType.Count() != 0) // Filter by OTDate Type ID
                {
                    model = model.Where(x => filter.OTDateType.Contains(x.OTDateTypeID.ToString()));
                }
                if (filter.OTTimeType.Count() != 0)
                {
                    model = model.Where(x => filter.OTTimeType.Contains(x.OTTimeTypeID.ToString()));
                }
                if (!string.IsNullOrEmpty(filter.startDate) && !string.IsNullOrEmpty(filter.endDate))
                {
                    model = model.Where(x => (x.OTDate.Value.Date >= DateTime.ParseExact(filter.startDate, CommonConstants.FormatDate_MMDDYYY, CultureInfo.InvariantCulture)) &&
                                        (x.OTDate.Value.Date <= DateTime.ParseExact(filter.endDate, CommonConstants.FormatDate_MMDDYYY, CultureInfo.InvariantCulture)));
                }
            }
            if (column != null)
            {
                return(model.OrderByField(column, isDesc));
            }
            return(model);
        }
예제 #6
0
        public async Task <HttpResponseMessage> GetAllGeneralAdmin(HttpRequestMessage request, string userID, string groupID, string column, bool isDesc, int page, int pageSize, [FromBody] FilterOTRequestModel filter)
        {
            Func <HttpResponseMessage> func = () =>
            {
                if (string.IsNullOrEmpty(userID) || string.IsNullOrEmpty(groupID))
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, nameof(userID) + MessageSystem.NoValues + nameof(groupID) + MessageSystem.NoValues));
                }
                var model         = _otrequestService.GetAllOTRequestByGeneralAdmin(userID, groupID, column, isDesc, filter);
                var responseData  = Mapper.Map <IEnumerable <OTRequest>, IEnumerable <OTRequestViewModel> >(model.Skip((page - 1) * pageSize).Take(pageSize));
                var paginationSet = new PaginationSet <OTRequestViewModel>()
                {
                    Items     = responseData,
                    PageIndex = page,
                    TotalRows = model.Count(),
                    PageSize  = pageSize
                };
                return(request.CreateResponse(HttpStatusCode.OK, paginationSet));
            };

            return(await CreateHttpResponse(request, func));
        }