public Tuple <bool, string> EditExistingProject(Models.ProjectView projectView)
        {
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource     = "luckydrawapplication20200108092548dbserver.database.windows.net";
                builder.UserID         = "sqladmin";
                builder.Password       = "******";
                builder.InitialCatalog = "luckywheeldb";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("UPDATE project SET ProjectName = '" + projectView.ProjectName.ToUpper() + "', EventID = " + projectView.EventID + ", NoOfProject = " + projectView.NoOfProject + ", PrizeCategory = '" + projectView.PrizeCategory.Trim() + "' WHERE ProjectID = " + projectView.ProjectID);
                    String sql = sb.ToString();

                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        SqlDataReader rd = command.ExecuteReader();
                    }
                }

                return(UploadEditedLuckyDrawPrizeData(projectView.ProjectID, projectView));
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.ToString());
                return(new Tuple <bool, string>(false, "File uploaded is not correctly formatted!"));
            }
        }
        public ActionResult Delete(int id, Models.ProjectView projectView)
        {
            Models.Admin a_user         = (Models.Admin)Session["admin"];
            Models.Event luckydrawevent = (Models.Event)Session["event"];

            if (a_user == null || luckydrawevent == null)
            {
                return(RedirectToAction("AdminIndex", "Login"));
            }

            ViewBag.Name = a_user.Name;

            try
            {
                bool deleted = DeleteExistingProject(id);

                if (deleted)
                {
                    return(RedirectToAction("Index", "Project"));
                }
                else
                {
                    ViewBag.ErrorMessage = "Deletion of event failed due to database problem!";
                    return(View());
                }
            }
            catch
            {
                ViewBag.ErrorMessage = "Deletion of project failed.";
                return(View());
            }
        }
        public ActionResult Create(Models.ProjectView projectView)
        {
            Models.Admin a_user         = (Models.Admin)Session["admin"];
            Models.Event luckydrawevent = (Models.Event)Session["event"];

            if (a_user == null || luckydrawevent == null)
            {
                return(RedirectToAction("AdminIndex", "Login"));
            }

            ViewBag.Name   = a_user.Name;
            ViewBag.Events = LoginController.GetEventList();

            try
            {
                if (ModelState.IsValid)
                {
                    if (projectView.PrizeData != null)
                    {
                        Tuple <bool, string> results = CreateNewProject(projectView);

                        if (results.Item1)
                        {
                            return(RedirectToAction("Index", "Project"));
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, results.Item2);
                            return(View());
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "Lucky draw prizes data file is missing!");
                        return(View());
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Creation of project failed. Invalid field columns!");
                    return(View());
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(string.Empty, "Creation of project failed. Database error!");
                return(View());
            }
        }
        // GET: Project/Delete/5
        public ActionResult Delete(int id)
        {
            Models.Admin a_user         = (Models.Admin)Session["admin"];
            Models.Event luckydrawevent = (Models.Event)Session["event"];

            if (a_user == null || luckydrawevent == null)
            {
                return(RedirectToAction("AdminIndex", "Login"));
            }

            ViewBag.Name = a_user.Name;
            Models.ProjectView projectView = GetProjectView(id);

            return(View(projectView));
        }
        public List <Models.ProjectView> GetProjectViewList()
        {
            List <Models.ProjectView> Projects = new List <Models.ProjectView>();

            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource     = "luckydrawapplication20200108092548dbserver.database.windows.net";
                builder.UserID         = "sqladmin";
                builder.Password       = "******";
                builder.InitialCatalog = "luckywheeldb";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("SELECT project.*, event.EventLocation, event.EventCode FROM project INNER JOIN event ON project.EventID = event.EventID");
                    String sql = sb.ToString();

                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        using (SqlDataReader rd = command.ExecuteReader())
                        {
                            while (rd.Read())
                            {
                                Models.ProjectView pv = new Models.ProjectView();
                                pv.ProjectID     = Convert.ToInt32(rd["ProjectID"].ToString());
                                pv.ProjectName   = rd["ProjectName"].ToString();
                                pv.EventID       = Convert.ToInt32(rd["EventID"].ToString());
                                pv.NoOfProject   = Convert.ToInt32(rd["NoOfProject"].ToString());
                                pv.PrizeCategory = rd["PrizeCategory"].ToString();
                                pv.EventName     = rd["EventCode"].ToString() + " - " + rd["EventLocation"].ToString();
                                Projects.Add(pv);
                            }
                        }
                    }
                }
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.ToString());
            }

            return(Projects);
        }
        public Tuple <bool, string> UploadLuckyDrawPrizeData(int project_id, Models.ProjectView pv)
        {
            try
            {
                StreamReader csvreader = new StreamReader(pv.PrizeData.InputStream);

                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource     = "luckydrawapplication20200108092548dbserver.database.windows.net";
                builder.UserID         = "sqladmin";
                builder.Password       = "******";
                builder.InitialCatalog = "luckywheeldb";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("INSERT INTO luckydraw(ProjectID, OrderNo, Prize) VALUES ");

                    while (!csvreader.EndOfStream)
                    {
                        string   line   = csvreader.ReadLine();
                        string[] values = line.Split(',');
                        sb.Append("(" + project_id + ", " + values[0] + ", " + values[1] + ") ,");
                    }

                    String sql = sb.ToString();
                    sql = sql.Substring(0, sql.Length - 1).ToString();

                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        SqlDataReader rd = command.ExecuteReader();
                    }
                }

                return(new Tuple <bool, string>(true, ""));
            }

            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(new Tuple <bool, string>(false, "File uploaded is not correctly formatted!"));
            }
        }
        public Tuple <bool, string> CreateNewProject(Models.ProjectView projectView)
        {
            int last_inserted_id = 0;

            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource     = "luckydrawapplication20200108092548dbserver.database.windows.net";
                builder.UserID         = "sqladmin";
                builder.Password       = "******";
                builder.InitialCatalog = "luckywheeldb";

                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("INSERT INTO project(ProjectName, EventID, NoOfProject, PrizeCategory) VALUES ('" + projectView.ProjectName.ToUpper() + "', " + projectView.EventID + ", 0, '" + projectView.PrizeCategory.Trim() + "'); SELECT SCOPE_IDENTITY() AS id;");

                    String sql = sb.ToString();

                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        using (SqlDataReader rd = command.ExecuteReader())
                        {
                            while (rd.Read())
                            {
                                last_inserted_id = Convert.ToInt32(rd["id"]);
                            }
                        }
                    }
                }

                return(UploadLuckyDrawPrizeData(last_inserted_id, projectView));
            }
            catch (SqlException e)
            {
                Console.WriteLine(e.ToString());
                return(new Tuple <bool, string>(false, "Error! Unable to create basic project"));
            }
        }