public async Task <ActionResult> UpdateDraftAsync(int id, [FromBody] PurchaseRequestDetailDTO purchaseRequestDetailDto, CancellationToken cancellationToken = default) { InitUserInfo(); if (!AllowCreate && !AllowUpdate) { return(ValidationProblem()); } var specFilter = new PurchaseRequestDetailFilterSpecification(int.Parse(purchaseRequestDetailDto.Id), true); var rowCount = await _purchaseRequestDetailService.CountAsync(specFilter, cancellationToken); if (rowCount == 0) { throw new EntityNotFoundException(nameof(PurchaseRequestDetail), purchaseRequestDetailDto.Id); } var purchaseRequestDetail = _mapper.Map <PurchaseRequestDetail>(purchaseRequestDetailDto); var result = await _purchaseRequestDetailService.PatchDraft(purchaseRequestDetail, cancellationToken); if (!result) { AssignToModelState(_purchaseRequestDetailService.Errors); return(ValidationProblem()); } return(CreatedAtAction(nameof(GetIdAsync), new { id = id }, null)); }
public async Task <ActionResult> UpdateAsync([FromBody] PurchaseRequestDetailDTO purchaseRequestDetail, CancellationToken cancellationToken) { InitUserInfo(); if (!AllowUpdate) { return(ValidationProblem()); } var specFilter = new PurchaseRequestDetailFilterSpecification(int.Parse(purchaseRequestDetail.Id), true); var rowCount = await _purchaseRequestDetailService.CountAsync(specFilter, cancellationToken); if (rowCount == 0) { throw new EntityNotFoundException(nameof(PurchaseRequestDetail), purchaseRequestDetail.Id); } // bind to old item var objItem = _mapper.Map <PurchaseRequestDetail>(purchaseRequestDetail); // untuk data yang mereference object, perlu di set null agar tidak insert sebagai data baru CleanReferenceObject(objItem); var result = await _purchaseRequestDetailService.PatchDraft(objItem, cancellationToken); if (!result) { AssignToModelState(_purchaseRequestDetailService.Errors); return(ValidationProblem()); } return(CreatedAtAction(nameof(GetIdAsync), new { id = objItem.Id }, null)); }
public async Task <IReadOnlyList <PurchaseRequest> > ListAsync( ISpecification <PurchaseRequest> spec, List <SortingInformation <PurchaseRequest> > sorting, bool withChilds = false, CancellationToken cancellationToken = default) { var purchaseRequests = await _unitOfWork.PurchaseRequestRepository.ListAsync(spec, sorting, cancellationToken); if (withChilds && purchaseRequests?.Count > 0) { var results = new List <PurchaseRequest>(purchaseRequests); var purchaseRequestIds = purchaseRequests.Select(e => e.Id).ToList(); var purchaseRequestDetailsFilter = new PurchaseRequestDetailFilterSpecification() { PurchaseRequestIds = purchaseRequestIds, ShowDraftList = BaseEntity.DraftStatus.All }.BuildSpecification(); var purchaseRequestDetailss = await _unitOfWork.PurchaseRequestDetailRepository.ListAsync(purchaseRequestDetailsFilter, null, cancellationToken); results.ForEach(c => c.AddRangePurchaseRequestDetails( purchaseRequestDetailss .Where(e => e.PurchaseRequestId == c.Id).ToList() )); return(results); } return(purchaseRequests); }
private async Task <PurchaseRequest> GetByIdAsync(int id, bool includeChilds = false, CancellationToken cancellationToken = default) { var specFilter = new PurchaseRequestFilterSpecification(id, true); var purchaseRequest = await _unitOfWork.PurchaseRequestRepository.FirstOrDefaultAsync(specFilter, cancellationToken); if (purchaseRequest == null || includeChilds == false) { return(purchaseRequest); } var purchaseRequestDetailsFilter = new PurchaseRequestDetailFilterSpecification() { PurchaseRequestIds = new List <int>() { id }, ShowDraftList = BaseEntity.DraftStatus.All }.BuildSpecification(); var purchaseRequestDetailss = await _unitOfWork.PurchaseRequestDetailRepository.ListAsync(purchaseRequestDetailsFilter, null, cancellationToken); purchaseRequest.AddRangePurchaseRequestDetails(purchaseRequestDetailss.ToList()); return(purchaseRequest); }
private async Task <PurchaseRequestDetail> GetByIdAsync(int id, bool includeChilds = false, CancellationToken cancellationToken = default) { var specFilter = new PurchaseRequestDetailFilterSpecification(id, true); var purchaseRequestDetail = await _unitOfWork.PurchaseRequestDetailRepository.FirstOrDefaultAsync(specFilter, cancellationToken); if (purchaseRequestDetail == null || includeChilds == false) { return(purchaseRequestDetail); } return(purchaseRequestDetail); }
public async Task <string> GenerateExcel(string excelFilename, int?refId = null, int?id = null, List <int> purchaseRequests = null, List <string> parts = null, List <int> qtys = null, DateTime?requestDateFrom = null, DateTime?requestDateTo = null, Dictionary <string, int> exact = null, CancellationToken cancellationToken = default) { try { PurchaseRequestDetailFilterSpecification filterSpec = null; if (id.HasValue) { filterSpec = new PurchaseRequestDetailFilterSpecification(id.Value); } else { filterSpec = new PurchaseRequestDetailFilterSpecification(exact) { Id = id, PurchaseRequestIds = purchaseRequests, PartIds = parts, Qtys = qtys, RequestDateFrom = requestDateFrom, RequestDateTo = requestDateTo } }.BuildSpecification(); var results = await this.ListAsync(filterSpec, null, true, cancellationToken); cancellationToken.ThrowIfCancellationRequested(); if (ExcelMapper.WriteToExcel <PurchaseRequestDetail>(excelFilename, "purchaseRequestDetail.json", results) == false) { if (refId.HasValue) { await _downloadProcessService.FailedToGenerate(refId.Value, "Failed to generate excel file"); } return(""); } // update database information (if needed) if (refId.HasValue) { excelFilename = Path.GetFileName(excelFilename); await _downloadProcessService.SuccessfullyGenerated(refId.Value, excelFilename); } return(excelFilename); }