/// <summary> /// Prepare paged return request list model /// </summary> /// <param name="searchModel">Return request search model</param> /// <returns>Return request list model</returns> public virtual ReturnRequestListModel PrepareReturnRequestListModel(ReturnRequestSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter emails var startDateValue = !searchModel.StartDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.StartDate.Value, _dateTimeHelper.CurrentTimeZone); var endDateValue = !searchModel.EndDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.EndDate.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1); var returnRequestStatus = searchModel.ReturnRequestStatusId == -1 ? null : (ReturnRequestStatus?)searchModel.ReturnRequestStatusId; //get return requests var returnRequests = _returnRequestService.SearchReturnRequests(customNumber: searchModel.CustomNumber, rs: returnRequestStatus, createdFromUtc: startDateValue, createdToUtc: endDateValue, pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize); //prepare list model var model = new ReturnRequestListModel().PrepareToGrid(searchModel, returnRequests, () => { return(returnRequests.Select(returnRequest => { //fill in model values from the entity var returnRequestModel = returnRequest.ToModel <ReturnRequestModel>(); var customer = _customerService.GetCustomerById(returnRequest.CustomerId); //convert dates to the user time returnRequestModel.CreatedOn = _dateTimeHelper.ConvertToUserTime(returnRequest.CreatedOnUtc, DateTimeKind.Utc); //fill in additional values (not existing in the entity) returnRequestModel.CustomerInfo = _customerService.IsRegistered(customer) ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest"); returnRequestModel.ReturnRequestStatusStr = _localizationService.GetLocalizedEnum(returnRequest.ReturnRequestStatus); var orderItem = _orderService.GetOrderItemById(returnRequest.OrderItemId); if (orderItem == null) { return returnRequestModel; } var order = _orderService.GetOrderById(orderItem.OrderId); var product = _productService.GetProductById(orderItem.ProductId); returnRequestModel.ProductId = orderItem.ProductId; returnRequestModel.ProductName = product.Name; returnRequestModel.OrderId = order.Id; returnRequestModel.AttributeInfo = orderItem.AttributeDescription; returnRequestModel.CustomOrderNumber = order.CustomOrderNumber; return returnRequestModel; })); }); return(model); }
/// <returns>A task that represents the asynchronous operation</returns> public virtual async Task <IActionResult> List(ReturnRequestSearchModel searchModel) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageReturnRequests)) { return(await AccessDeniedDataTablesJson()); } //prepare model var model = await _returnRequestModelFactory.PrepareReturnRequestListModelAsync(searchModel); return(Json(model)); }
public virtual IActionResult List(ReturnRequestSearchModel searchModel) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageReturnRequests)) { return(AccessDeniedKendoGridJson()); } //prepare model var model = _returnRequestModelFactory.PrepareReturnRequestListModel(searchModel); return(Json(model)); }
/// <summary> /// Prepare return request search model /// </summary> /// <param name="searchModel">Return request search model</param> /// <returns>Return request search model</returns> public virtual ReturnRequestSearchModel PrepareReturnRequestSearchModel(ReturnRequestSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //prepare available return request statuses _baseAdminModelFactory.PrepareReturnRequestStatuses(searchModel.ReturnRequestStatusList, false); //for some reason, the standard default value (0) for the "All" item is already used for the "Pending" status, so here we use -1 searchModel.ReturnRequestStatusId = -1; searchModel.ReturnRequestStatusList.Insert(0, new SelectListItem { Value = "-1", Text = _localizationService.GetResource("Admin.ReturnRequests.SearchReturnRequestStatus.All") }); //prepare page parameters searchModel.SetGridPageSize(); return(searchModel); }
/// <summary> /// Prepare paged return request list model /// </summary> /// <param name="searchModel">Return request search model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the return request list model /// </returns> public virtual async Task <ReturnRequestListModel> PrepareReturnRequestListModelAsync(ReturnRequestSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter emails var startDateValue = !searchModel.StartDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.StartDate.Value, await _dateTimeHelper.GetCurrentTimeZoneAsync()); var endDateValue = !searchModel.EndDate.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.EndDate.Value, await _dateTimeHelper.GetCurrentTimeZoneAsync()).AddDays(1); var returnRequestStatus = searchModel.ReturnRequestStatusId == -1 ? null : (ReturnRequestStatus?)searchModel.ReturnRequestStatusId; //get return requests var returnRequests = await _returnRequestService.SearchReturnRequestsAsync(customNumber : searchModel.CustomNumber, rs : returnRequestStatus, createdFromUtc : startDateValue, createdToUtc : endDateValue, pageIndex : searchModel.Page - 1, pageSize : searchModel.PageSize); //prepare list model var model = await new ReturnRequestListModel().PrepareToGridAsync(searchModel, returnRequests, () => { return(returnRequests.SelectAwait(async returnRequest => await PrepareReturnRequestModelAsync(null, returnRequest))); }); return(model); }