Example #1
0
        /// <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}.");
            }
        }
Example #2
0
        /// <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}."
                           ));
            }
        }