public ViewModel_Conference GetViewModel(int?id)
        {
            ViewModel_Conference viewModel_Conference = new ViewModel_Conference();

            //  Return as record null
            if (id == null)
            {
                return(viewModel_Conference);
            }
            Conference conference = db.Conferences.Find(id);

            if (conference == null)
            {
                return(viewModel_Conference);
            }
            Cmn cmn = new Cmn();

            viewModel_Conference.Confernece = conference;
            List <ControlDate> controlDates = db.ControlDates.Where(p => p.ConferenceID == conference.ID).OrderBy(p => p.Description).ToList();

            viewModel_Conference.ControlDates = controlDates;
            List <Field> Fields = db.Fields.Where(p => p.ConferenceID == conference.ID).OrderBy(p => p.RowNum).ToList();

            viewModel_Conference.Fields = Fields;
            //  Disabled
            //  List<ConfigureVPC> ConfigureVPCs = db.ConfigureVPCs.Where(p => p.ConferenceID == conference.ID).OrderBy(p => p.Explanation).ToList();
            //  viewModel_Conference.ConfigureVPCs = ConfigureVPCs;
            viewModel_Conference.NumberOfSubmittedPaper   = db.Papers.Count(p => p.ConferenceID == conference.ID);
            viewModel_Conference.NumberOfSubmittedPayment = db.Payments.Count(p => p.ConferenceID == conference.ID);

            return(viewModel_Conference);
        }
        // GET: Conferences/Close/5
        public ActionResult Close(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Conference conference = db.Conferences.Find(id);

            if (conference == null)
            {
                return(HttpNotFound());
            }
            ;

            ViewModel_Conference viewModel_Conference = new ViewModel_Conference();

            viewModel_Conference = GetViewModel(id);

            return(View(viewModel_Conference));
        }
        public ActionResult CloseConfirmed(ViewModel_Conference viewModel_Conference)
        {
            if (viewModel_Conference == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece.ID == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Cmn cmn = new Cmn();

            cmn.UserName = "******";
            if (User.Identity.IsAuthenticated)
            {
                cmn.UserName = User.Identity.Name;
            }
            Conference conference = db.Conferences.Find(viewModel_Conference.Confernece.ID);

            if (conference == null)
            {
                return(RedirectToAction("", "Home", null));
            }

            //  Close conference
            conference.RevokeReason = viewModel_Conference.Confernece.RevokeReason;
            conference.DateClose    = cmn.CurrentDatetime;
            conference.UserClose    = cmn.UserName;

            db.SaveChanges();

            return(RedirectToAction("Details", "Conferences", new { id = conference.ID }));
        }
        // GET: Conferences/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Conference conference = db.Conferences.Find(id);

            if (conference == null)
            {
                return(HttpNotFound());
            }
            ;

            ViewModel_Conference viewModel_Conference = new ViewModel_Conference();

            viewModel_Conference = GetViewModel(id);

            return(View(viewModel_Conference));
            //  View Menu:
            //  1. Enabled Return:                                          Conferences/Index
            //  List all
        }
        public ActionResult UploadMedia(ViewModel_Conference viewModel_Conference, HttpPostedFileBase docFile)
        {
            if (viewModel_Conference == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece.ID == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (!ModelState.IsValid)
            {
                ViewData["error"] = "Please check below item(s), again";
                return(View(viewModel_Conference));
            }
            //  Save
            //  Procedure of form edition
            Cmn cmn = new Cmn();

            cmn.UserName = "******";
            if (User.Identity.IsAuthenticated)
            {
                cmn.UserName = User.Identity.Name;
            }
            Conference conference = db.Conferences.Find(viewModel_Conference.Confernece.ID);

            if (docFile != null)
            {
                try
                {
                    var fileName = cmn.GetFileName("Conference", "Media", conference.ID.ToString(), "", conference.Code.ToString(), Path.GetExtension(docFile.FileName).ToString());
                    var filePath = Path.Combine(Server.MapPath(cmn.GetStoredFilePath()), fileName);
                    docFile.SaveAs(filePath);
                    conference.FileNameMedia = Path.GetFileName(docFile.FileName);
                    conference.FilePathMedia = filePath.ToString();
                }
                catch
                {
                    ViewData["uploadMsg"] = "Upload failed";
                    viewModel_Conference  = GetViewModel(viewModel_Conference.Confernece.ID);
                    return(View(viewModel_Conference));
                }
            }
            // ***  Non-system attribute (Finish)   *** //
            //  Set system log
            conference.DateEdit        = cmn.CurrentDatetime;
            conference.UserEdit        = cmn.UserName;
            db.Entry(conference).State = EntityState.Modified;
            //  Update database
            db.SaveChanges();
            String ctrlBtn = Request.Form["ctrlBtn"];

            if (ctrlBtn == "Refresh")
            {
                return(RedirectToAction("UploadMedia", "Conferences", new { id = conference.ID }));
            }
            if (ctrlBtn == "Submit")
            {
                return(RedirectToAction("Details", "Conferences", new { id = conference.ID }));
            }
            return(RedirectToAction("", "Home", null));
        }
        public ActionResult Edited(ViewModel_Conference viewModel_Conference, HttpPostedFileBase docFile)
        {
            if (viewModel_Conference == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (viewModel_Conference.Confernece.ID == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (!ModelState.IsValid)
            {
                ViewData["error"] = "Please check below item(s), again";
                return(View(viewModel_Conference));
            }
            //  Save
            //  Procedure of form edition
            Cmn cmn = new Cmn();

            cmn.UserName = "******";
            if (User.Identity.IsAuthenticated)
            {
                cmn.UserName = User.Identity.Name;
            }
            Conference conference = db.Conferences.Find(viewModel_Conference.Confernece.ID);

            //  Save as Fields / Technical / Area
            if (viewModel_Conference.Fields != null)
            {
                foreach (Field item in viewModel_Conference.Fields)
                {
                    Field field = db.Fields.Find(item.ID);
                    // ***  Non-system attribute (Begin)    *** //
                    field.Code        = item.Code;
                    field.Description = item.Description;
                    // ***  Non-system attribute (Finish)   *** //
                    //  Set system log
                    field.DateEdit        = cmn.CurrentDatetime;
                    field.UserEdit        = cmn.UserName;
                    db.Entry(field).State = EntityState.Modified;
                }
            }
            //  Save as control date
            if (viewModel_Conference.ControlDates != null)
            {
                foreach (ControlDate item in viewModel_Conference.ControlDates)
                {
                    ControlDate controlDate = db.ControlDates.Find(item.ID);
                    // ***  Non-system attribute (Begin)    *** //
                    controlDate.Description = item.Description;
                    controlDate.PeriodFrom  = item.PeriodFrom;
                    controlDate.PeriodTo    = item.PeriodTo;
                    // ***  Non-system attribute (Finish)   *** //
                    //  Set system log
                    controlDate.DateEdit        = cmn.CurrentDatetime;
                    controlDate.UserEdit        = cmn.UserName;
                    db.Entry(controlDate).State = EntityState.Modified;
                }
            }
            // ***  Non-system attribute (Begin)    *** //
            conference.Title      = viewModel_Conference.Confernece.Title;
            conference.PeriodFrom = viewModel_Conference.Confernece.PeriodFrom;
            conference.PeriodTo   = viewModel_Conference.Confernece.PeriodTo;
            conference.Venue      = viewModel_Conference.Confernece.Venue;
            conference.City       = viewModel_Conference.Confernece.City;
            conference.Country    = viewModel_Conference.Confernece.Country;
            conference.HomeUrl    = viewModel_Conference.Confernece.HomeUrl;
            conference.Contact    = viewModel_Conference.Confernece.Contact;
            conference.Style      = viewModel_Conference.Confernece.Style;
            if (docFile != null)
            {
                try
                {
                    var fileName = cmn.GetFileName("Conference", "Poster", conference.ID.ToString(), "", conference.Code.ToString(), Path.GetExtension(docFile.FileName).ToString());
                    var filePath = Path.Combine(Server.MapPath(cmn.GetStoredFilePath()), fileName);
                    docFile.SaveAs(filePath);
                    conference.FileNamePoster = Path.GetFileName(docFile.FileName);
                    conference.FilePathPoster = filePath.ToString();
                }
                catch
                {
                    ViewData["uploadMsg"] = "Upload failed";
                    return(View(viewModel_Conference));
                }
            }
            // ***  Non-system attribute (Finish)   *** //
            //  Set system log
            conference.DateEdit        = cmn.CurrentDatetime;
            conference.UserEdit        = cmn.UserName;
            db.Entry(conference).State = EntityState.Modified;
            //  Update database
            db.SaveChanges();
            String ctrlBtn = Request.Form["ctrlBtn"];

            if (ctrlBtn == "Refresh")
            {
                return(RedirectToAction("Edit", "Conferences", new { id = conference.ID }));
            }
            if (ctrlBtn == "Add Item")
            {
                //  Set row number
                String numRecord = db.Fields.Count(p => p.ConferenceID == conference.ID).ToString();
                String maxVal    = db.Fields.Where(p => p.ConferenceID == conference.ID).Max(p => p.RowNum).ToString();
                Field  newItem   = new Field();
                newItem.ConferenceID = conference.ID;
                newItem.RowNum       = cmn.CnvInteger(cmn.GetVersionID(numRecord.ToString(), maxVal, 2));
                newItem.DateCreate   = cmn.CurrentDatetime;
                newItem.UserCreate   = cmn.UserName;
                newItem.DateEdit     = cmn.CurrentDatetime;
                newItem.UserEdit     = cmn.UserName;
                db.Fields.Add(newItem);
                db.SaveChanges();
                return(RedirectToAction("Edit", "Conferences", new { id = conference.ID }));
            }
            if (ctrlBtn == "Submit")
            {
                List <Field> removeItems = db.Fields.Where(p => p.ConferenceID == conference.ID)
                                           .Where(p => p.Code == null && p.Description == null)
                                           .ToList();
                if (removeItems == null)
                {
                    return(RedirectToAction("Details", "Conferences", new { id = conference.ID }));
                }
                ;
                foreach (Field removeItem in removeItems)
                {
                    db.Fields.Remove(removeItem);
                }
                db.SaveChanges();
                return(RedirectToAction("Details", "Conferences", new { id = conference.ID }));
            }
            return(RedirectToAction("", "Home", null));
        }
        // GET: Conferences/Edit/5
        public ActionResult Edit(int?id)
        {
            Cmn cmn = new Cmn();

            cmn.UserName = "******";
            if (User.Identity.IsAuthenticated)
            {
                cmn.UserName = User.Identity.Name;
            }
            UserInformation userInformation = db.UserInformations.Where(p => p.UserAccount == cmn.UserName)
                                              .Where(p => p.PermissionEnabled == "Enabled")
                                              .FirstOrDefault();

            if (userInformation == null)
            {
                return(RedirectToAction("", "Home", null));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Conference conference = db.Conferences.Find(id);

            if (conference == null)
            {
                return(HttpNotFound());
            }
            ;
            if (conference.DateClose != null)
            {
                return(RedirectToAction("Details", "Conferences", new { id = conference.ID }));
            }

            ViewModel_Conference viewModel_Conference = new ViewModel_Conference();

            viewModel_Conference = GetViewModel(id);

            //  Select persentation type
            List <SelectedListItem> selectStyles    = new List <SelectedListItem>();
            List <CommonDropList>   commonDropLists = db.CommonDropLists.Where(p => p.Category == "StyleType").OrderBy(p => p.SequenceNum).ToList();

            if (commonDropLists != null)
            {
                foreach (CommonDropList commonDropList in commonDropLists)
                {
                    SelectedListItem selectStyle = new SelectedListItem();
                    selectStyle.SequenceNumber = commonDropList.SequenceNum;
                    selectStyle.ItemText       = commonDropList.Text;
                    selectStyle.ItemValue      = commonDropList.Value;
                    selectStyles.Add(selectStyle);
                }
            }
            viewModel_Conference.SelectStyles = selectStyles;

            //  System administator
            if (userInformation.PermissionGroup == "Administrator")
            {
                return(View(viewModel_Conference));
            }
            //  Return to home as not selected conference
            if (userInformation.SelectedConference != viewModel_Conference.Confernece.ID)
            {
                return(RedirectToAction("", "Home", null));
            }

            Committee committee = db.Committees.Where(p => p.ConferenceID == viewModel_Conference.Confernece.ID)
                                  .Where(p => p.UserAccount == userInformation.UserAccount)
                                  .FirstOrDefault();

            //  Chair account
            if (committee.PermissionGroup == "Chair")
            {
                return(View(viewModel_Conference));
            }
            //  TPC account
            if (committee.PermissionGroup == "Chair")
            {
                return(View(viewModel_Conference));
            }

            return(RedirectToAction("", "Home", null));
        }
        // GET: Conferences/Manage/5
        public ActionResult Manage(int?id)
        {
            Cmn cmn = new Cmn();

            cmn.UserName = "******";
            if (User.Identity.IsAuthenticated)
            {
                cmn.UserName = User.Identity.Name;
            }
            UserInformation userInformation = db.UserInformations.Where(p => p.UserAccount == cmn.UserName)
                                              .Where(p => p.PermissionEnabled == "Enabled")
                                              .FirstOrDefault();

            if (userInformation == null)
            {
                return(RedirectToAction("", "Home", null));
            }

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Conference conference = db.Conferences.Find(id);

            if (conference == null)
            {
                return(HttpNotFound());
            }
            ;
            ViewModel_Conference viewModel_Conference = new ViewModel_Conference();

            viewModel_Conference = GetViewModel(id);

            //  System administator
            if (userInformation.PermissionGroup == "Administrator")
            {
                return(View(viewModel_Conference));
            }
            //  Return to home as not selected conference
            if (userInformation.SelectedConference != viewModel_Conference.Confernece.ID)
            {
                return(RedirectToAction("", "Home", null));
            }

            Committee committee = db.Committees.Where(p => p.ConferenceID == viewModel_Conference.Confernece.ID)
                                  .Where(p => p.UserAccount == userInformation.UserAccount)
                                  .FirstOrDefault();

            //  Chair account
            if (committee.PermissionGroup == "Chair")
            {
                return(View(viewModel_Conference));
            }
            //  TPC account
            if (committee.PermissionGroup == "Chair")
            {
                return(View(viewModel_Conference));
            }

            return(RedirectToAction("", "Home", null));
            //  View Menu:
            //  1. Enabled Return:                                          Conferences/Index
            //  2. Enabled Edit:                                            Conferences/Edit/5
            //  4. Enabled Delete conference as Not included below items:   Conferences/Delete/5
            //  5. Enabled Import committee list:                           Conferences/Committee/5
            //  6. Enabled Price item list:                                 Conferences/PricesPresetting/5
            //  7. Enabled Configure Virtual Payment Client (VPC):          Conferences/VPCConfigure/5
            //  8. Enabled Upload mdia:                                     Conferences/UploadMedia/5
            //  9. Enabled Close conference:                                Conferences/Close/5
            //  List All
        }