/// <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); }
public async Task <IActionResult> AddOrUpdateApplication(AddOrUpdateApplicationRequest request) { var response = await _applicationService.AddOrUpdateApplication(request); return(Ok(new ApiOkResponse(response))); }