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)); } }
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)); }
/// <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(); }
/// <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)); }
/// <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); }
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)); }