public async Task <IActionResult> Add([FromForm] AddOrUpdateVersionRequest request) { //var version = await _versionService.FindAsync(x => x.Id == request.Id); //if (version == null) //{ // var bundle = await _bundleService.UploadFile(request); // var newVersion = _mapper.Map<CS.EF.Models.Version>(request); // newVersion.Bundles.Add(bundle); // await _versionService.AddAsync(newVersion); // version = newVersion; //} //else //{ // version.Code = request.Code; // version.Name = request.Name; // version.UpdatedDate = DateTime.Now; // await _versionService.UpdateAsync(version, version.Id); //} //var response = _mapper.Map<VersionViewModel>(version); //response.Bundles = _mapper.Map<List<BundleViewModel>>(version.Bundles); var response = await _versionService.AddOrUpdateVersion(request); return(Ok(new ApiOkResponse(response))); }
public async Task <CS.EF.Models.Bundle> UploadFile(AddOrUpdateVersionRequest request) { var bundle = new CS.EF.Models.Bundle(); var file = request.BundleInfomation.BundleFile; if (file.Length > 0) { var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); try { var folderName = @"Bundle/"; var pathToSave = Path.Combine("wwwroot/", folderName); Directory.CreateDirectory(pathToSave); var fullPath = Path.Combine(pathToSave, fileName); using (var stream = new FileStream(fullPath, FileMode.Create)) { await file.CopyToAsync(stream); } bundle = _mapper.Map <CS.EF.Models.Bundle>(request); var scheme = _httpContextAccessor.HttpContext.Request.Scheme; var host = _httpContextAccessor.HttpContext.Request.Host; var pathBase = _httpContextAccessor.HttpContext.Request.PathBase; bundle.Link = $"{scheme}://{host}{pathBase}/{folderName}{fileName}"; bundle.VersionId = request.Id; _unitOfWork.GetRepository <CS.EF.Models.Bundle>().Add(bundle); await _unitOfWork.CommitAsync(); return(bundle); } catch (Exception ex) { throw new Exception(ex.Message); } } return(bundle); }
/// <summary> /// Adds the or update version. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public async Task <VersionViewModel> AddOrUpdateVersion(AddOrUpdateVersionRequest request) { var version = await _unitOfWork.GetRepository <CS.EF.Models.Version>().FindAsync(x => x.Id == request.Id); var application = await _unitOfWork.GetRepository <Application>().FindAsync(x => x.Id == request.ApplicationId); if (application == null) { throw new Exception(ErrorMessages.NotFoundApplication); } if (version == null) { var bundle = await _bundleService.UploadFile(request); var newVersion = _mapper.Map <CS.EF.Models.Version>(request); newVersion.ApplicationName = application.Name; newVersion.Bundles.Add(bundle); _unitOfWork.GetRepository <CS.EF.Models.Version>().Add(newVersion); version = newVersion; } else { version.IsActive = request.IsActive; version.Code = request.Code; version.Name = request.Name; version.ApplicationName = application.Name; version.UpdatedDate = DateTime.Now; _unitOfWork.GetRepository <CS.EF.Models.Version>().Update(version); } await _unitOfWork.CommitAsync(); var response = _mapper.Map <VersionViewModel>(version); response.Bundles = _mapper.Map <List <BundleViewModel> >(version.Bundles); return(response); }