Example #1
0
    private void SaveData(string data)
    {
        List<Task> colTask = new List<Task>();
        Task currTask = null;
        // read the data into a .NET object and save
        using (JsonTextReader reader = new JsonTextReader(new StringReader(data)))
        {
            bool toContinue = true;
            do
            {
                if (reader.TokenClass == JsonTokenClass.BOF)
                    reader.Read();  // read to get in the file
                else if (reader.TokenClass == JsonTokenClass.Object)
                {
                    currTask = new Task();
                    reader.Read();  // read to get to the first member
                }
                else if (reader.TokenClass == JsonTokenClass.Member
                            && reader.Text == "taskID")
                {
                    reader.Read();                                      //  Read to get to the member data
                    currTask.TaskID = new Guid(reader.ReadString());    // then read the data
                }
                else if (reader.TokenClass == JsonTokenClass.Member
                            && reader.Text == "isComplete")
                {
                    reader.Read();                                 //  Read to get to the member data
                    currTask.IsComplete = reader.ReadBoolean();    // then read the data
                }
                else if (reader.TokenClass == JsonTokenClass.Member
                            && reader.Text == "description")
                {
                    reader.Read();                                 //  Read to get to the member data
                    currTask.Description = reader.ReadString();    // then read the data
                }
                else if (reader.TokenClass == JsonTokenClass.Member
                            && reader.Text == "dueDate")
                {
                    reader.Read();                                 //  Read to get to the member data
                    currTask.DueDate = DateTime.Parse(reader.ReadString());    // then read the data
                }
                else if (reader.TokenClass == JsonTokenClass.EndObject)
                {
                    colTask.Add(currTask);
                    reader.Read();
                }
                else if (reader.TokenClass == JsonTokenClass.EndArray)
                    toContinue = false;
                else
                    reader.Read();  // just continue reading, don't want to get stuck

            } while (toContinue == true);

        }

        // prioratize them according to the order they were saved
        int counter = 0;
        foreach (Task task in colTask)
        {
            task.Priority = counter++;
        }

        // Don't allow them to have more than 10
        while (colTask.Count > 10)
        {
            colTask.Remove(colTask[10]);
        }

        // Now call SQL and save it
        // make DB call to get tasks
        SqlConnection conn = null;
        SqlTransaction transaction = null;
        try
        {
            conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PTO_Procs"].ConnectionString);
            conn.Open();
            transaction = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand("sp_DeleteAllTasks", conn, transaction);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.ExecuteNonQuery();

            SqlCommand cmdInsert = null;
            foreach (Task task in colTask)
            {
                cmdInsert = new SqlCommand("sp_InsertTask", conn, transaction);
                cmdInsert.CommandType = CommandType.StoredProcedure;
                cmdInsert.Parameters.Add(new SqlParameter("@taskID", task.TaskID));
                cmdInsert.Parameters.Add(new SqlParameter("@description", task.Description));
                cmdInsert.Parameters.Add(new SqlParameter("@dueDate", task.DueDate));
                cmdInsert.Parameters.Add(new SqlParameter("@isComplete", task.IsComplete));
                cmdInsert.Parameters.Add(new SqlParameter("@priority", task.Priority));

                cmdInsert.ExecuteNonQuery();
            }

            transaction.Commit();
        }
        catch (Exception ex)
        {
            if (transaction != null)
                transaction.Rollback();
            throw ex;
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }

        Response.ContentType = "application/json";
        Response.Write("Saved");
        Response.End();
    }