示例#1
0
        public ActionResult Create(CreateDatabaseModel model)
        {
            if (Databases.GetList().Count(d => d.Owner.ID == UserAccount.ID && d.Name == model.Name) != 0)
            {
                ModelState.AddModelError("Name", String.Format("You already have database with name '{0}'.", model.Name));
            }

            if (ModelState.IsValid)
            {
                Database database = new Database
                {
                    Name             = model.Name,
                    Revision         = 1,
                    OwnerID          = UserAccount.ID,
                    PublicIdentifier = Guid.NewGuid().ToString()
                };
                Databases.Add(database);

                DatabaseRevision revision = new DatabaseRevision
                {
                    DatabaseID = database.ID,
                    Content    = model.Content,
                    Timestamp  = DateTime.Now,
                    Revision   = 1
                };
                Revisions.Add(revision);

                ShowMessage("Database created");
                return(RedirectToAction("index"));
            }

            return(View(model));
        }
        public string Update(string identifier)
        {
            byte[] buffer = new byte[Request.TotalBytes];
            Request.InputStream.Read(buffer, 0, Request.TotalBytes);

            Database database = Databases.GetList().FirstOrDefault(d => d.PublicIdentifier == identifier);

            if (database != null)
            {
                DatabaseRevision revision = new DatabaseRevision
                {
                    DatabaseID = database.ID,
                    Content    = Encoding.UTF8.GetString(buffer, 0, buffer.Length),
                    Revision   = database.Revision + 1,
                    Timestamp  = DateTime.Now
                };
                Revisions.Add(revision);

                database.Revision = revision.Revision;
                Databases.Update(database);

                return(revision.Content);
            }

            //Request.InputStream
            return(null);
        }
        public string Get(string identifier)
        {
            DatabaseRevision revision = Revisions.GetList().Where(r => r.Database.PublicIdentifier == identifier).OrderByDescending(r => r.Revision).FirstOrDefault();

            if (revision != null)
            {
                return(revision.Content);
            }

            return(null);
        }
示例#4
0
        public ActionResult DeleteRevision(int id)
        {
            DatabaseRevision revision = Revisions.Get(id);

            if (revision == null || revision.Database.OwnerID != UserAccount.ID)
            {
                ShowMessage("No such revision", HtmlMessageType.Error);
                return(RedirectToAction("index"));
            }

            Revisions.Delete(revision);
            ShowMessage("Database revision deleted.");
            return(RedirectToAction("edit", new { id = revision.DatabaseID }));
        }
示例#5
0
        public ActionResult EditRevision(int id)
        {
            DatabaseRevision revision = Revisions.Get(id);

            if (revision == null || revision.Database.OwnerID != UserAccount.ID)
            {
                ShowMessage("No such revision", HtmlMessageType.Error);
                return(RedirectToAction("index"));
            }

            return(View(new EditRevisionModel
            {
                RevisionID = revision.ID,
                DatabaseID = revision.DatabaseID,
                Content = revision.Content
            }));
        }
示例#6
0
        public ActionResult EditRevision(EditRevisionModel model)
        {
            Database database = Databases.GetList().FirstOrDefault(d => d.ID == model.DatabaseID);

            if (database == null || database.OwnerID != UserAccount.ID)
            {
                ShowMessage("No such database", HtmlMessageType.Error);
                return(RedirectToAction("index"));
            }

            if (ModelState.IsValid)
            {
                if (model.RevisionID == 0)
                {
                    DatabaseRevision revision = new DatabaseRevision
                    {
                        DatabaseID = database.ID,
                        Content    = model.Content,
                        Timestamp  = DateTime.Now,
                        Revision   = database.Revision + 1
                    };
                    Revisions.Add(revision);
                    database.Revision = revision.Revision;
                    Databases.Update(database);

                    ShowMessage("Database revision created.");
                    return(RedirectToAction("edit", new { id = revision.DatabaseID })); //TODO: Updating revision count on database seems not working
                }
                else
                {
                    DatabaseRevision revision = Revisions.Get(model.RevisionID);
                    if (revision != null)
                    {
                        revision.Content   = model.Content;
                        revision.Timestamp = DateTime.Now;
                        Revisions.Update(revision);

                        ShowMessage("Database revision updated.");
                        return(RedirectToAction("edit", new { id = revision.DatabaseID }));
                    }
                }
            }

            return(View());
        }
示例#7
0
 public DatabaseRows(dynamic obj)
 {
     id    = obj.id;
     key   = obj.key;
     value = new DatabaseRevision(obj.value);
 }