/// <summary> /// Update single entity /// </summary> public void Put(Models.Bikes.Bike bike) { using (var scope = Scope("Put")) { // authorize AuthProvider.Authorize(Permission.Bike_Management); // throws UnauthorizedException or we have CurrentUser after this // prepare Helper.Expect(bike, bike.BikeId); // validate Helper.ValidateModel(bike, true); // process var saveImage = !string.IsNullOrEmpty(bike.ImageToUploadContentBase64) && !string.IsNullOrEmpty(bike.ImageToUploadFileName); var entity = bike.ToEntity(); BusinessEntities.Bikes.Bike prevEntity = null; if (saveImage) { prevEntity = BikeManager.GetById(entity.BikeId); // increment seq entity.ImageSeq = prevEntity.ImageSeq.GetValueOrDefault() + 1; entity.ImageFormat = ContentManager.GetFormat(BikeManager.GetImageContentRef(entity, false)).FileFormat.GetValueOrDefault(); // image will be validated when saving } BikeManager.Update(entity); scope.Complete( () => { // after commit if (saveImage) { // delete previous image if (prevEntity.ImageSeq.HasValue && prevEntity.ImageFormat.HasValue) { BikeManager.DeleteImage(prevEntity); } // save new image BikeManager.SaveImage(entity, ContentManager.DecodeBase64Image(bike.ImageToUploadContentBase64)); } }, () => $"Bike has been updated with Id={bike.BikeId}."); } }
/// <summary> /// Create new entity /// </summary> public Models.Bikes.Bike Post(Models.Bikes.Bike bike, Location?currentLocation) { using (var scope = Scope("Post")) { // authorize AuthProvider.Authorize(Permission.Bike_Management); // throws UnauthorizedException or we have CurrentUser after this // prepare bike.Created = DateTime.UtcNow; bike.CreatedBy = new UserRef(AuthProvider.CurrentUser); bike.AvailableFromUtc = DateTime.UtcNow; Helper.Expect(bike); // validate Helper.ValidateModel(bike, true); // process var saveImage = !string.IsNullOrEmpty(bike.ImageToUploadContentBase64) && !string.IsNullOrEmpty(bike.ImageToUploadFileName); var entity = bike.ToEntity(); if (saveImage) { // increment seq entity.ImageSeq = 1; entity.ImageFormat = ContentManager.GetFormat(BikeManager.GetImageContentRef(entity, false)).FileFormat.GetValueOrDefault(); // image will be validated when saving } BikeManager.Add(entity); return(scope.Complete( () => { // after commit if (saveImage) { // save new image BikeManager.SaveImage(entity, ContentManager.DecodeBase64Image(bike.ImageToUploadContentBase64)); } return new Models.Bikes.Bike(BikeManager.GetById(entity.BikeId), currentLocation); }, t => $"Bike has been created with Id={bike.BikeId}." )); } }