public JsonResult RequestProperty(PropertyRequisition request, String contactPurpose)
        {
            ErrorModel errorModel = new ErrorModel();

            if (ModelState.IsValid)
            {
                try
                {
                    using (EasyFindPropertiesEntities dbCtx = new EasyFindPropertiesEntities())
                    {
                        if (Session["userId"] != null)
                        {
                            UnitOfWork unitOfWork = new UnitOfWork(dbCtx);

                            Guid userId = (Guid)Session["userId"];

                            if (contactPurpose.Equals("requisition"))
                            {
                                PropertyRequisition requisition = new PropertyRequisition()
                                {
                                    ID           = Guid.NewGuid(),
                                    UserID       = userId,
                                    PropertyID   = request.PropertyID,
                                    Msg          = request.Msg,
                                    IsAccepted   = false,
                                    ExpiryDate   = DateTime.Now.AddDays(7),//requisition should last for a week
                                    DateTCreated = DateTime.Now
                                };

                                unitOfWork.PropertyRequisition.Add(requisition);
                                unitOfWork.save();

                                var userTo = unitOfWork.Property.GetPropertyOwnerByPropID(request.PropertyID).User;
                                //DashboardHub.BroadcastUserMessages(userTo.Email); broadcast requisition
                            }
                            else
                            {
                                var userTo = unitOfWork.Property.GetPropertyOwnerByPropID(request.PropertyID).User;

                                Message message = new Message()
                                {
                                    ID           = Guid.NewGuid(),
                                    To           = userTo.ID,
                                    From         = userId,
                                    Msg          = request.Msg,
                                    Seen         = false,
                                    DateTCreated = DateTime.Now
                                };

                                unitOfWork.Message.Add(message);
                                unitOfWork.save();
                                DashboardHub.BroadcastUserMessages(userTo.Email);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    errorModel = MiscellaneousHelper.PopulateErrorModel(ModelState);
                }
            }
            else
            {
                errorModel = MiscellaneousHelper.PopulateErrorModel(ModelState);
            }

            MvcCaptcha.ResetCaptcha("captcha");//TODO find a way to reload captcha image after returning the response
            return(Json(errorModel));
        }/*
 public RequisitionViewModel()
 {
     this.PropertyRequisition = new PropertyRequisition();
 }