Esempio n. 1
31
        public JsonResult Update(string model)
        {
            string typeName = string.Empty;
            string reason   = string.Empty;
            string message  = string.Empty;

            try
            {
                Lookup item = JsonConvert.DeserializeObject <Lookup>(model);
                typeName = item.Type;
                LookupProvider provider = new LookupProvider(_dbContext);

                // check to make sure the lookup name is not used anywhere
                LookupType type;
                if (Enum.TryParse(typeName, out type))
                {
                    // make sure the original one is not in used
                    Lookup oldItem = provider.Retrieve(item.Id);
                    if (provider.InUse(type, oldItem.Name)) // old lookup name is in used; can't change it
                    {
                        reason  = "Conflict";
                        message = string.Format("Cannot change {0} type of '{1}' that is still in used.", typeName, oldItem.Name);
                    }
                    else if (provider.Exist(type, item.Name) || provider.InUse(type, item.Name)) // new lookup name is in used; can't change it
                    {
                        reason  = "Conflict";
                        message = InUseMessage(typeName, item.Name);
                    }
                    else
                    {
                        provider.Update(item.Id, item);
                        provider.Commit();
                        return(Json(item, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    reason  = "Bad Type";
                    message = TypeNotFound(typeName);
                }
            }
            catch (Exception ex)
            {
                reason  = "Server Error";
                message = ex.Message + " " + ex.InnerException.Message;
            }

            // assemble custom error for kendo CRUD operation
            Response.StatusCode = (int)System.Net.HttpStatusCode.OK; // custom error return 200 code
            var exception = new                                      // custom response body indicated by the 'errors' field
            {
                errors = CrudError("Update", typeName, reason, message)
            };

            return(Json(exception, JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
3
        public JsonResult Delete(string model)
        {
            string typeName = string.Empty;
            string reason   = string.Empty;
            string message  = string.Empty;

            try
            {
                Lookup item = JsonConvert.DeserializeObject <Lookup>(model);
                typeName = item.Type;
                LookupProvider provider = new LookupProvider(_dbContext);

                // check to make sure the lookup exists and is not used anywhere
                LookupType type;
                if (Enum.TryParse(typeName, out type))
                {
                    if (provider.InUse(type, item.Name))
                    {
                        reason  = "Conflict";
                        message = InUseMessage(typeName, item.Name);
                    }
                    else
                    {
                        provider.Delete(item.Id);
                        provider.Commit();
                        return(Json(string.Empty, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    reason  = "Bad Type";
                    message = TypeNotFound(typeName);
                }
            }
            catch (Exception ex)
            {
                reason  = "Server Error";
                message = ex.Message + " " + ex.InnerException.Message;
            }

            // assemble custom error for kendo CRID operation
            Response.StatusCode = (int)System.Net.HttpStatusCode.OK; // custom error return 200 code
            var exception = new                                      // custom response body indicated by the 'errors' field
            {
                errors = CrudError("Delete", typeName, reason, message)
            };

            return(Json(exception, JsonRequestBehavior.AllowGet));
        }