Example #1
0
        private void ValidateImage(BrokeredMessage ReceivedMessage)
        {
            try
            {
                Trace.WriteLine("Processing Service Bus message: " + ReceivedMessage.SequenceNumber.ToString());

                ValidationRequest ValidationReq = ReceivedMessage.GetBody <ValidationRequest>();

                Image image       = db.Images.Find(ValidationReq.ImageId);
                bool  isValidated = false;

                if (image != null)
                {
                    Trace.WriteLine("Processing Image ID: " + image.Id);
                    isValidated = ImageOperations.Validate(image.Id);
                    if (isValidated)
                    {
                        image.Validated = true;
                        Trace.WriteLine("Message Processed and Image validation passed for image ID :  " + image.Id);
                    }
                    else
                    {
                        //Delete image from BLOB
                        List <int> lstImageDelete = new List <int>();
                        lstImageDelete.Add(image.Id);
                        ImageOperations.DeleteBlobs(lstImageDelete);

                        //Delete database record of image
                        db.Images.Remove(image);

                        Trace.WriteLine("Message Processed and Image validation failed for image ID : " + image.Id);
                    }
                    db.SaveChanges();

                    //Reply to User by Queues
                    ImageSharingWorkerRole.DAL.MessageQueue.EnqueResponseMessage(image.Caption, image.User.Email.Substring(0, image.User.Email.IndexOf('@')), isValidated);
                    Trace.WriteLine("Queue Message enqueued");
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
                throw ex;
            }
            finally
            {
                ReceivedMessage.Complete();
            }
        }