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)));
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }