public async Task <IActionResult> Create(string id, [FromBody] ProviderFingerprintCreateModel model) { if (string.IsNullOrWhiteSpace(id)) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadModelResponse(ModelState)); } return(Ok(await _providerManager.CreateFingerprint(id, model))); }
/// <summary> /// Create fingerprint for provider /// </summary> /// <param name="providerId">Target provider id</param> /// <param name="model">Create fingerprint model</param> /// <returns>Provider fingerprint display model</returns> public async Task <ProviderFingerprintDisplayModel> CreateFingerprint(string providerId, ProviderFingerprintCreateModel model) { if (string.IsNullOrWhiteSpace(providerId)) { throw new ModelDamagedException(nameof(providerId), "is required"); } if (model == null) { throw new ModelDamagedException(nameof(model), "is required"); } if (string.IsNullOrWhiteSpace(model.Name)) { throw new ModelDamagedException(nameof(model.Name), "is required"); } var entity = await _providerRepository.Get(providerId); if (entity == null) { throw new EntityNotFoundException(providerId, typeof(Provider)); } if (entity.Owner.Id != (await GetCurrentUser())?.Id) { throw new AccessDeniedException(entity.Id, typeof(Provider)); } if (entity.Fingerprints == null) { entity.Fingerprints = new List <ProviderFingerprint>(); } if (entity.Fingerprints.Any(x => x.Name.ToLower() == model.Name.ToLower())) { throw new MRSystemException($"Fingerprint with name {model.Name} already exists"); } if (entity.Fingerprints == null) { entity.Fingerprints = new List <ProviderFingerprint>(); } var fingerprint = _mapper.Map <ProviderFingerprint>(model); fingerprint.Fingerprint = FingerprintGenerator.Generate(); fingerprint.FingerprintUpdateTime = DateTime.UtcNow; entity.Fingerprints.Add(fingerprint); await _providerRepository.UpdateFingerprints(entity); return(_mapper.Map <ProviderFingerprintDisplayModel>(fingerprint)); }