コード例 #1
0
        /// <summary>
        /// Adds the or update application.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <ApplicationViewModel> AddOrUpdateApplication(AddOrUpdateApplicationRequest request)
        {
            var application = await _unitOfWork.GetRepository <Application>().FindAsync(x => x.Id == request.Id);

            List <CS.EF.Models.Version> versions = new List <CS.EF.Models.Version>();

            if (request.VersionIds != null && request.VersionIds.Count > 0)
            {
                versions = await _unitOfWork.GetRepository <CS.EF.Models.Version>().GetAll().Where(x => request.VersionIds.Contains(x.Id)).ToListAsync();
            }

            if (application == null)
            {
                var newApp = _mapper.Map <Application>(request);

                foreach (var item in versions)
                {
                    newApp.Versions.Add(item);
                }
                _unitOfWork.GetRepository <Application>().Add(newApp);
                application = newApp;
            }
            else
            {
                var deviceConfigs = _unitOfWork.GetRepository <DeviceConfig>().GetAll().Where(x => x.ApplicationId == application.Id);

                foreach (var item in deviceConfigs)
                {
                    item.ApplicationName = request.Name;
                    _unitOfWork.GetRepository <DeviceConfig>().Update(item);
                }

                foreach (var item in versions)
                {
                    application.Versions.Add(item);
                }
                application.Name        = request.Name;
                application.IsActive    = request.IsActive;
                application.PackageName = request.PackageName;
                application.UpdatedDate = DateTime.Now;
                _unitOfWork.GetRepository <Application>().Update(application);
            }

            try
            {
                await _unitOfWork.CommitAsync();
            }
            catch (Exception ex)
            {
                throw new Exception(ErrorMessages.PackageNameHaveExist);
            }

            var result = _mapper.Map <ApplicationViewModel>(application);

            result.Versions = _mapper.Map <List <VersionViewModel> >(application.Versions);

            return(result);
        }
コード例 #2
0
        public async Task <IActionResult> AddOrUpdateApplication(AddOrUpdateApplicationRequest request)
        {
            var response = await _applicationService.AddOrUpdateApplication(request);

            return(Ok(new ApiOkResponse(response)));
        }