public string Delete(string token)
        {
            token = TokenManager.readToken(HttpContext.Current.Request);
            string message = "";
            var    strP    = TokenManager.GetPrincipal(token);

            if (strP != "0") //invalid authorization
            {
                return(TokenManager.GenerateToken(strP));
            }
            else
            {
                int                 storageCostId = 0;
                int                 userId        = 0;
                Boolean             final         = false;
                IEnumerable <Claim> claims        = TokenManager.getTokenClaims(token);
                foreach (Claim c in claims)
                {
                    if (c.Type == "itemId")
                    {
                        storageCostId = int.Parse(c.Value);
                    }
                    else if (c.Type == "userId")
                    {
                        userId = int.Parse(c.Value);
                    }
                    else if (c.Type == "final")
                    {
                        final = bool.Parse(c.Value);
                    }
                }
                if (final)
                {
                    try
                    {
                        using (incposdbEntities entity = new incposdbEntities())
                        {
                            storageCost objectDelete = entity.storageCost.Find(storageCostId);

                            entity.storageCost.Remove(objectDelete);
                            message = entity.SaveChanges().ToString();

                            return(TokenManager.GenerateToken(message));
                        }
                    }
                    catch
                    {
                        message = "-1";
                        return(TokenManager.GenerateToken(message));
                    }
                }
                else
                {
                    try
                    {
                        using (incposdbEntities entity = new incposdbEntities())
                        {
                            storageCost objectDelete = entity.storageCost.Find(storageCostId);

                            objectDelete.isActive     = 0;
                            objectDelete.updateUserId = userId;
                            objectDelete.updateDate   = DateTime.Now;
                            message = entity.SaveChanges().ToString();

                            return(TokenManager.GenerateToken(message));
                        }
                    }
                    catch
                    {
                        message = "-2";
                        return(TokenManager.GenerateToken(message));
                    }
                }
            }
        }
        public string Save(string token)
        {
            token = TokenManager.readToken(HttpContext.Current.Request);
            string message = "";
            var    strP    = TokenManager.GetPrincipal(token);

            if (strP != "0") //invalid authorization
            {
                return(TokenManager.GenerateToken(strP));
            }
            else
            {
                string              storageCostObject = "";
                storageCost         newObject         = null;
                IEnumerable <Claim> claims            = TokenManager.getTokenClaims(token);
                foreach (Claim c in claims)
                {
                    if (c.Type == "itemObject")
                    {
                        storageCostObject = c.Value.Replace("\\", string.Empty);
                        storageCostObject = storageCostObject.Trim('"');
                        newObject         = JsonConvert.DeserializeObject <storageCost>(storageCostObject, new IsoDateTimeConverter {
                            DateTimeFormat = "dd/MM/yyyy"
                        });
                        break;
                    }
                }

                if (newObject.updateUserId == 0 || newObject.updateUserId == null)
                {
                    Nullable <int> id = null;
                    newObject.updateUserId = id;
                }
                if (newObject.createUserId == 0 || newObject.createUserId == null)
                {
                    Nullable <int> id = null;
                    newObject.createUserId = id;
                }

                try
                {
                    using (incposdbEntities entity = new incposdbEntities())
                    {
                        var locationEntity = entity.Set <storageCost>();
                        if (newObject.storageCostId == 0)
                        {
                            newObject.createDate   = DateTime.Now;
                            newObject.updateDate   = DateTime.Now;
                            newObject.updateUserId = newObject.createUserId;


                            locationEntity.Add(newObject);
                            entity.SaveChanges();
                            message = newObject.storageCostId.ToString();
                        }
                        else
                        {
                            var tmpObject = entity.storageCost.Where(p => p.storageCostId == newObject.storageCostId).FirstOrDefault();

                            tmpObject.updateDate   = DateTime.Now;
                            tmpObject.updateUserId = newObject.updateUserId;

                            tmpObject.name = newObject.name;
                            tmpObject.cost = newObject.cost;
                            tmpObject.note = newObject.note;

                            tmpObject.isActive = newObject.isActive;
                            entity.SaveChanges();
                            message = tmpObject.storageCostId.ToString();
                        }
                    }
                }
                catch
                {
                    message = "-1";
                }
            }
            return(TokenManager.GenerateToken(message));
        }