예제 #1
0
        public ActionResult PaperList(int id)
        {
            List <ViewModelSubmission> results = new List <ViewModelSubmission>();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var submissions = entity.Submissions.Where(c => c.ConferenceId == id).OrderBy(c => c.FullPaperDate);
                foreach (var subItem in submissions)
                {
                    ViewModelSubmission newSubmission = new ViewModelSubmission();

                    var user = entity.Users.SingleOrDefault(c => c.UserId == subItem.UserId);

                    newSubmission.AuthorName      = user.FirstName + " " + user.LastName;
                    newSubmission.UserId          = subItem.UserId;
                    newSubmission.ConferenceId    = subItem.ConferenceId;
                    newSubmission.FullPaperStatus = subItem.FullPaperStatus;
                    newSubmission.FullPaperDate   = subItem.FullPaperDate;
                    newSubmission.PaymentDate     = subItem.PaymentDate;
                    newSubmission.Comment         = subItem.Comment;
                    newSubmission.Title           = subItem.Title;
                    newSubmission.SubmissionId    = subItem.SubmissionId;
                    newSubmission.Institution     = user.Institution;
                    newSubmission.Number          = subItem.PaperNumber;
                    results.Add(newSubmission);
                }
            }
            return(View(results));
        }
예제 #2
0
        public ActionResult SubmitPayment(int id)
        {
            ViewModelSubmission sub = new ViewModelSubmission();

            sub.SubmissionId = id;
            return(View(sub));
        }
        public ActionResult Assign(int id)
        {
            //get user credential
            string currentUserEmail = HttpContext.User.Identity.Name;

            ViewModelConference newConf = new ViewModelConference();

            PrepareSelectList();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var subThemes = entity.SubThemes.ToList();

                var conference = entity.Conferences.SingleOrDefault(c => c.ConferenceId == id);

                //fill the properties
                newConf.ConferenceId      = conference.ConferenceId;
                newConf.Name              = conference.Name;
                newConf.StartDate         = conference.StartDate;
                newConf.EndDate           = conference.EndDate;
                newConf.PaperSubStartDate = conference.PaperSubStartDate;
                newConf.PaperSubEndDate   = conference.PaperSubEndDate;
                newConf.Submissions       = new List <ViewModelSubmission>();

                var uses = entity.Users.ToList();

                var submissions = entity.Submissions.Where(c => c.ConferenceId == conference.ConferenceId);
                foreach (var subItem in submissions)
                {
                    var user          = uses.SingleOrDefault(c => c.UserId == subItem.UserId);
                    var formatChecker = uses.SingleOrDefault(c => c.UserId == subItem.FormatCheckerId);
                    var reviwer       = uses.SingleOrDefault(c => c.UserId == subItem.ReviewedBy);
                    var proofReader   = uses.SingleOrDefault(c => c.UserId == subItem.ProofReaderId);

                    ViewModelSubmission newSubmission = new ViewModelSubmission();
                    newSubmission.UserId            = subItem.UserId;
                    newSubmission.AuthorName        = user.FirstName + " " + user.LastName;
                    newSubmission.ConferenceId      = subItem.ConferenceId;
                    newSubmission.FullPaperStatus   = subItem.FullPaperStatus;
                    newSubmission.Title             = subItem.Title;
                    newSubmission.SubmissionId      = subItem.SubmissionId;
                    newSubmission.Number            = subItem.PaperNumber;
                    newSubmission.SubThemesId       = subItem.SubThemesId;
                    newSubmission.SubThemes         = subThemes.FirstOrDefault(c => c.SubThemesId == subItem.SubThemesId).Title;
                    newSubmission.PaymentTypeString = subItem.PaymentType == Constant.PaymentType.Full ? Constant.PaymentType.FullString : Constant.PaymentType.PartialString;
                    newSubmission.PaymentType       = subItem.PaymentType;
                    newSubmission.FormatCheckerName = subItem.FormatCheckerId.HasValue ? formatChecker.FirstName + " " + formatChecker.LastName : "";
                    newSubmission.FormatCheckerId   = subItem.FormatCheckerId.HasValue ? subItem.FormatCheckerId.Value : 0;
                    newSubmission.ReviewerName      = subItem.ReviewedBy.HasValue ? reviwer.FirstName + " " + reviwer.LastName : "";
                    newSubmission.ReviewedBy        = subItem.ReviewedBy.HasValue ? subItem.ReviewedBy.Value : 0;
                    newSubmission.ProofReaderName   = subItem.ProofReaderId.HasValue ? proofReader.FirstName + " " + proofReader.LastName : "";
                    newSubmission.ProofReaderId     = subItem.ProofReaderId.HasValue ? subItem.ProofReaderId.Value : 0;


                    newConf.Submissions.Add(newSubmission);
                }
            }
            return(View(newConf));
        }
        public ActionResult Edit(int id)
        {
            ViewModelSubmission sub = new ViewModelSubmission();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.SubmissionId = oldSub.SubmissionId;
                sub.ConferenceId = oldSub.ConferenceId;
                sub.Title        = oldSub.Title;
            }
            return(View(sub));
        }
        public ActionResult AuthorPayment(int id)
        {
            //get user credential
            string currentUserEmail = HttpContext.User.Identity.Name;

            ViewModelConference newConf = new ViewModelConference();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var subThemes = entity.SubThemes.ToList();

                var conference = entity.Conferences.SingleOrDefault(c => c.ConferenceId == id);

                //fill the properties
                newConf.ConferenceId      = conference.ConferenceId;
                newConf.Name              = conference.Name;
                newConf.StartDate         = conference.StartDate;
                newConf.EndDate           = conference.EndDate;
                newConf.PaperSubStartDate = conference.PaperSubStartDate;
                newConf.PaperSubEndDate   = conference.PaperSubEndDate;
                newConf.Submissions       = new List <ViewModelSubmission>();

                var uses = entity.Users.ToList();

                var submissions = entity.Submissions.Where(c => c.ConferenceId == conference.ConferenceId && (c.FullPaperStatus == Constant.FullPaperStatus.Pending || c.FullPaperStatus == Constant.FullPaperStatus.PaymentVerified));
                foreach (var subItem in submissions)
                {
                    var user = uses.SingleOrDefault(c => c.UserId == subItem.UserId);

                    ViewModelSubmission newSubmission = new ViewModelSubmission();
                    newSubmission.UserId = subItem.UserId;
                    newSubmission.PaymentVerificationDate = subItem.PaymentVerificationDate.HasValue ? subItem.PaymentVerificationDate.Value : newSubmission.PaymentVerificationDate;
                    newSubmission.AuthorName        = user.FirstName + " " + user.LastName;
                    newSubmission.ConferenceId      = subItem.ConferenceId;
                    newSubmission.FullPaperStatus   = subItem.FullPaperStatus;
                    newSubmission.Title             = subItem.Title;
                    newSubmission.SubmissionId      = subItem.SubmissionId;
                    newSubmission.Number            = subItem.PaperNumber;
                    newSubmission.SubThemesId       = subItem.SubThemesId;
                    newSubmission.TotalPayment      = subItem.TotalPayment.Value;
                    newSubmission.SubThemes         = subThemes.FirstOrDefault(c => c.SubThemesId == subItem.SubThemesId).Title;
                    newSubmission.PaymentTypeString = subItem.PaymentType == Constant.PaymentType.Full ? Constant.PaymentType.FullString : Constant.PaymentType.PartialString;

                    newSubmission.PaymentDate = subItem.PaymentDate;


                    newConf.Submissions.Add(newSubmission);
                }
            }
            return(View(newConf));
        }
예제 #6
0
        public ActionResult EditProofReading(int id, HttpPostedFileBase file)
        {
            if (file == null)
            {
                ModelState.AddModelError("file", "File cannot be empty");

                ViewModelSubmission sub = new ViewModelSubmission();
                using (IcasieEntities entity = new IcasieEntities())
                {
                    var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                    sub.SubmissionId = oldSub.SubmissionId;
                    sub.Title        = oldSub.Title;
                    sub.SubThemesId  = oldSub.SubThemesId;
                }

                PrepareSelectList();

                return(View(sub));
            }

            using (IcasieEntities entity = new IcasieEntities())
            {
                var sub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.FullPaperStatus            = Constant.FullPaperStatus.Reviewed;
                sub.ProofReadingDate           = null;
                sub.ProofReadingResultFileName = null;
                sub.ProofReadingResult         = null;
                sub.Comment = Constant.InitialCommentProofRead;

                if (file != null)
                {
                    using (Stream inputStream = file.InputStream)
                    {
                        MemoryStream memoryStream = inputStream as MemoryStream;
                        if (memoryStream == null)
                        {
                            memoryStream = new MemoryStream();
                            inputStream.CopyTo(memoryStream);
                        }
                        sub.FullPaper         = memoryStream.ToArray();
                        sub.FullPaperFileName = file.FileName;
                    }
                }


                entity.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
예제 #7
0
        public ActionResult EditProofReading(int id)
        {
            ViewModelSubmission sub = new ViewModelSubmission();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.SubmissionId = oldSub.SubmissionId;
                sub.Title        = oldSub.Title;
                sub.SubThemesId  = oldSub.SubThemesId;
            }
            PrepareSelectList();
            return(View(sub));
        }
예제 #8
0
        public ActionResult EditFullPaper(int id)
        {
            ViewModelSubmission sub = new ViewModelSubmission();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.SubmissionId    = oldSub.SubmissionId;
                sub.Title           = oldSub.Title;
                sub.SubThemesId     = oldSub.SubThemesId;
                sub.CoAuthors       = oldSub.CoAuthors;
                sub.PaymentType     = oldSub.PaymentType;
                sub.FullPaperStatus = oldSub.FullPaperStatus;

                PrepareViewData(entity);
            }

            PrepareSelectList();

            return(View(sub));
        }
예제 #9
0
        public ActionResult PaperList(int id)
        {
            List <ViewModelSubmission> results = new List <ViewModelSubmission>();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var conference = entity.Conferences.SingleOrDefault(c => c.ConferenceId == id);
                ViewData["ConferenceName"] = conference.Name;

                var submissions = entity.Submissions.Where(c => c.ConferenceId == id).OrderBy(c => c.FullPaperDate);
                foreach (var subItem in submissions)
                {
                    ViewModelSubmission newSubmission = new ViewModelSubmission();

                    var user          = entity.Users.SingleOrDefault(c => c.UserId == subItem.UserId);
                    var formatChecker = entity.Users.SingleOrDefault(c => c.UserId == subItem.FormatCheckerId);
                    var reviewer      = entity.Users.SingleOrDefault(c => c.UserId == subItem.ReviewedBy);
                    var proofReader   = entity.Users.SingleOrDefault(c => c.UserId == subItem.ProofReaderId);

                    newSubmission.AuthorName        = user.FirstName + " " + user.LastName;
                    newSubmission.UserId            = subItem.UserId;
                    newSubmission.ConferenceId      = subItem.ConferenceId;
                    newSubmission.FullPaperStatus   = subItem.FullPaperStatus;
                    newSubmission.FullPaperDate     = subItem.FullPaperDate;
                    newSubmission.PaymentDate       = subItem.PaymentDate;
                    newSubmission.Comment           = subItem.Comment;
                    newSubmission.Title             = subItem.Title;
                    newSubmission.SubmissionId      = subItem.SubmissionId;
                    newSubmission.Institution       = user.Institution;
                    newSubmission.Number            = subItem.PaperNumber;
                    newSubmission.FormatCheckerName = reviewer != null ? formatChecker.FirstName + " " + formatChecker.LastName : "";
                    newSubmission.ReviewerName      = reviewer != null ? reviewer.FirstName + " " + reviewer.LastName : "";
                    newSubmission.ProofReaderName   = proofReader != null ? proofReader.FirstName + " " + proofReader.LastName : "";
                    results.Add(newSubmission);
                }
            }
            return(View(results));
        }
예제 #10
0
        public ActionResult SubmitPayment(int id, HttpPostedFileBase payment)
        {
            if (payment == null)
            {
                ModelState.AddModelError("payment", "Payment evidence cannot be empty");
            }

            if (!ModelState.IsValid)
            {
                ViewModelSubmission sub = new ViewModelSubmission();
                sub.SubmissionId = id;
                return(View(sub));
            }

            using (IcasieEntities entity = new IcasieEntities())
            {
                var sub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.PaymentFileName = payment.FileName;
                sub.FullPaperDate   = DateTime.Now;
                sub.PaymentDate     = DateTime.Now;

                using (Stream inputStream = payment.InputStream)
                {
                    MemoryStream memoryStream = inputStream as MemoryStream;
                    if (memoryStream == null)
                    {
                        memoryStream = new MemoryStream();
                        inputStream.CopyTo(memoryStream);
                    }
                    sub.Payment = memoryStream.ToArray();
                }

                entity.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
예제 #11
0
        public ActionResult EditFullPaper(int id, string title, HttpPostedFileBase file, int subThemesId, int coAuthors = 0, int paymentType = 0)
        {
            if (file == null)
            {
                ModelState.AddModelError("file", "File cannot be empty");

                ViewModelSubmission sub = new ViewModelSubmission();
                using (IcasieEntities entity = new IcasieEntities())
                {
                    var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                    sub.SubmissionId    = oldSub.SubmissionId;
                    sub.Title           = oldSub.Title;
                    sub.SubThemesId     = oldSub.SubThemesId;
                    sub.CoAuthors       = oldSub.CoAuthors;
                    sub.PaymentType     = oldSub.PaymentType;
                    sub.FullPaperStatus = oldSub.FullPaperStatus;

                    PrepareViewData(entity);
                }

                PrepareSelectList();

                return(View(sub));
            }

            using (IcasieEntities entity = new IcasieEntities())
            {
                var sub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                sub.Title = title;
                //sub.FullPaperStatus = Constant.FullPaperStatus.Pending;
                sub.ReviewDate                   = null;
                sub.FullPaperReview              = null;
                sub.FullPaperReviewFileName      = null;
                sub.FullPaperReview2             = null;
                sub.FullPaperReviewFileName2     = null;
                sub.FullPaperReview3             = null;
                sub.FullPaperReviewFileName3     = null;
                sub.ProofReadingResult           = null;
                sub.ProofReadingResultFileName   = null;
                sub.FormatCheckingResult         = null;
                sub.FormatCheckingResultFileName = null;
                sub.Comment     = Constant.InitialComment;
                sub.SubThemesId = subThemesId;
                sub.CoAuthors   = coAuthors;
                sub.PaymentType = paymentType;

                var user = entity.Users.SingleOrDefault(c => c.UserId == sub.UserId);


                if (sub.FullPaperStatus.Equals(Constant.FullPaperStatus.Pending))
                {
                    var fees = entity.Fees.ToList();

                    decimal full     = 0;
                    decimal seminar  = 0;
                    decimal coauthor = 0;


                    if (user.Country != Constant.Indonesia)
                    {
                        full     = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.OverseasFull)).Price;
                        seminar  = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.OverseasSeminar)).Price;
                        coauthor = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.OverseasCoauthor)).Price;
                    }
                    else
                    {
                        full     = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.IndonesianFull)).Price;
                        seminar  = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.IndonesianSeminar)).Price;
                        coauthor = fees.SingleOrDefault(c => c.Name.Equals(Constant.Fees.IndonesianCoauthor)).Price;
                    }

                    decimal total = 0;
                    if (paymentType == Constant.PaymentType.Full)
                    {
                        total += full;
                    }
                    else
                    {
                        total += seminar;
                    }

                    total           += (coAuthors * coauthor);
                    sub.TotalPayment = total;
                }
                else if (sub.FullPaperStatus.Equals(Constant.FullPaperStatus.FormatRevised))
                {
                    sub.FullPaperStatus = Constant.FullPaperStatus.PaymentVerified;
                }
                else if (sub.FullPaperStatus.Equals(Constant.FullPaperStatus.Revised))
                {
                    sub.FullPaperStatus = Constant.FullPaperStatus.FormatChecked;
                }
                else if (sub.FullPaperStatus.Equals(Constant.FullPaperStatus.ProofReadingRevised))
                {
                    sub.FullPaperStatus = Constant.FullPaperStatus.Reviewed;
                }


                if (file != null)
                {
                    using (Stream inputStream = file.InputStream)
                    {
                        MemoryStream memoryStream = inputStream as MemoryStream;
                        if (memoryStream == null)
                        {
                            memoryStream = new MemoryStream();
                            inputStream.CopyTo(memoryStream);
                        }
                        sub.FullPaper         = memoryStream.ToArray();
                        sub.FullPaperFileName = file.FileName;
                    }
                }


                entity.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
예제 #12
0
        public ActionResult Index()
        {
            //get user credential
            string currentUserEmail = HttpContext.User.Identity.Name;

            List <ViewModelConference> confList = new List <ViewModelConference>();

            using (IcasieEntities entity = new IcasieEntities())
            {
                var user   = entity.Users.SingleOrDefault(c => c.Email == currentUserEmail);
                int userId = user.UserId;

                var subThemes = entity.SubThemes.ToList();

                var conference = entity.Conferences.ToList();

                foreach (var item in conference)
                {
                    ViewModelConference newConf = new ViewModelConference();
                    newConf.PaperSubActive = false;

                    if (item.PaperSubStartDate <= DateTime.Now && item.PaperSubEndDate >= DateTime.Now)
                    {
                        newConf.PaperSubActive = true;
                    }

                    //fill the properties
                    newConf.ConferenceId      = item.ConferenceId;
                    newConf.Name              = item.Name;
                    newConf.StartDate         = item.StartDate;
                    newConf.EndDate           = item.EndDate;
                    newConf.PaperSubStartDate = item.PaperSubStartDate;
                    newConf.PaperSubEndDate   = item.PaperSubEndDate;
                    newConf.Submissions       = new List <ViewModelSubmission>();

                    var submissions = entity.Submissions.Where(c => c.UserId == userId && c.ConferenceId == item.ConferenceId);
                    foreach (var subItem in submissions)
                    {
                        ViewModelSubmission newSubmission = new ViewModelSubmission();
                        newSubmission.UserId            = subItem.UserId;
                        newSubmission.ConferenceId      = subItem.ConferenceId;
                        newSubmission.FullPaperStatus   = subItem.FullPaperStatus;
                        newSubmission.FullPaperDate     = subItem.FullPaperDate;
                        newSubmission.PaymentDate       = subItem.PaymentDate;
                        newSubmission.Comment           = subItem.Comment;
                        newSubmission.Title             = subItem.Title;
                        newSubmission.SubmissionId      = subItem.SubmissionId;
                        newSubmission.Number            = subItem.PaperNumber;
                        newSubmission.SubThemesId       = subItem.SubThemesId;
                        newSubmission.SubThemes         = subThemes.FirstOrDefault(c => c.SubThemesId == subItem.SubThemesId).Title;
                        newSubmission.PaymentTypeString = subItem.PaymentType == Constant.PaymentType.Full ? Constant.PaymentType.FullString : Constant.PaymentType.PartialString;
                        newSubmission.PaymentType       = subItem.PaymentType;
                        newSubmission.CoAuthors         = subItem.CoAuthors;
                        newSubmission.TotalPayment      = subItem.TotalPayment.Value;

                        if (subItem.ReviewedBy != null)
                        {
                            var reviewer = entity.Users.SingleOrDefault(c => c.UserId == subItem.ReviewedBy);
                            newSubmission.ReviewerName             = reviewer.FirstName + " " + reviewer.LastName;
                            newSubmission.FullPaperReviewFileName  = subItem.FullPaperReviewFileName;
                            newSubmission.FullPaperReviewFileName2 = subItem.FullPaperReviewFileName2;
                            newSubmission.FullPaperReviewFileName3 = subItem.FullPaperReviewFileName3;
                        }

                        if (subItem.ProofReaderId != null)
                        {
                            var proofReader = entity.Users.SingleOrDefault(c => c.UserId == subItem.ProofReaderId);
                            newSubmission.ProofReaderName           = proofReader.FirstName + " " + proofReader.LastName;
                            newSubmission.ProofReaderResultFileName = subItem.ProofReadingResultFileName;
                        }

                        if (subItem.FormatCheckerId != null)
                        {
                            var formatChecker = entity.Users.SingleOrDefault(c => c.UserId == subItem.FormatCheckerId);
                            newSubmission.FormatCheckerName            = formatChecker.FirstName + " " + formatChecker.LastName;
                            newSubmission.FormatCheckingResultFileName = subItem.FormatCheckingResultFileName;
                        }


                        newSubmission.ReviewDateString         = subItem.ReviewDate.HasValue ? subItem.ReviewDate.Value.ToString(Constant.DateFormat) : string.Empty;
                        newSubmission.ProofReadingDateString   = subItem.ProofReadingDate.HasValue ? subItem.ProofReadingDate.Value.ToString(Constant.DateFormat) : string.Empty;
                        newSubmission.FormatCheckingDateString = subItem.FormatCheckingDate.HasValue ? subItem.FormatCheckingDate.Value.ToString(Constant.DateFormat) : string.Empty;

                        newConf.Submissions.Add(newSubmission);
                    }

                    confList.Add(newConf);
                }
            }
            return(View(confList));
        }
        public ActionResult Index(int id)
        {
            List <ViewModelConference> confList = new List <ViewModelConference>();
            //get user credential
            string currentUserEmail = HttpContext.User.Identity.Name;

            using (IcasieEntities entity = new IcasieEntities())
            {
                var conference = entity.Conferences.Where(c => c.ConferenceId == id).ToList();

                var subThemes = entity.SubThemes.ToList();

                var formatChecker = entity.Users.SingleOrDefault(c => c.Email == currentUserEmail);

                foreach (var item in conference)
                {
                    ViewModelConference newConf = new ViewModelConference();
                    newConf.PaperSubActive = false;

                    if (item.PaperSubStartDate <= DateTime.Now && item.PaperSubEndDate >= DateTime.Now)
                    {
                        newConf.PaperSubActive = true;
                    }

                    //fill the properties
                    newConf.ConferenceId      = item.ConferenceId;
                    newConf.Name              = item.Name;
                    newConf.StartDate         = item.StartDate;
                    newConf.EndDate           = item.EndDate;
                    newConf.PaperSubStartDate = item.PaperSubStartDate;
                    newConf.PaperSubEndDate   = item.PaperSubEndDate;
                    newConf.Submissions       = new List <ViewModelSubmission>();

                    var submissions = entity.Submissions.Where(c => c.ConferenceId == item.ConferenceId && c.FormatCheckerId == formatChecker.UserId && (c.FullPaperStatus == Constant.FullPaperStatus.PaymentVerified || c.FullPaperStatus == Constant.FullPaperStatus.FormatRevised));
                    foreach (var subItem in submissions)
                    {
                        ViewModelSubmission newSubmission = new ViewModelSubmission();
                        newSubmission.UserId = subItem.UserId;

                        var user = entity.Users.SingleOrDefault(c => c.UserId == newSubmission.UserId);

                        newSubmission.AuthorName        = user.FirstName + " " + user.LastName;
                        newSubmission.ConferenceId      = subItem.ConferenceId;
                        newSubmission.FullPaperStatus   = subItem.FullPaperStatus;
                        newSubmission.FullPaper         = subItem.FullPaper;
                        newSubmission.FullPaperDate     = subItem.FullPaperDate;
                        newSubmission.FullPaperFileName = subItem.FullPaperFileName;
                        newSubmission.Title             = subItem.Title;
                        newSubmission.SubmissionId      = subItem.SubmissionId;
                        newSubmission.Number            = subItem.PaperNumber;
                        newSubmission.SubThemesId       = subItem.SubThemesId;
                        newSubmission.SubThemes         = subThemes.FirstOrDefault(c => c.SubThemesId == subItem.SubThemesId).Title;


                        if (subItem.FormatCheckerId != null)
                        {
                            var formatCheckerId = entity.Users.SingleOrDefault(c => c.UserId == subItem.FormatCheckerId);
                            newSubmission.FormatCheckerName            = formatCheckerId.FirstName + " " + formatCheckerId.LastName;
                            newSubmission.FormatCheckingResultFileName = subItem.FormatCheckingResultFileName;
                        }


                        newSubmission.FormatCheckingDateString = subItem.FormatCheckingDate.HasValue ? subItem.FormatCheckingDate.Value.ToString(Constant.DateFormat) : string.Empty;

                        newConf.Submissions.Add(newSubmission);
                    }

                    confList.Add(newConf);
                }
            }
            return(View(confList));
        }
        public ActionResult Edit(int id, string fullPaperStatus, string comment, HttpPostedFileBase file)
        {
            int conferenceId = 0;

            if (fullPaperStatus == Constant.FullPaperStatus.FormatRevised && file == null)
            {
                ModelState.AddModelError("file", "File cannot be empty");
            }

            if (fullPaperStatus == Constant.FullPaperStatus.FormatRevised)
            {
                if (comment == null || comment == string.Empty)
                {
                    ModelState.AddModelError("comment", "Comment is required");
                }
            }

            if (!ModelState.IsValid)
            {
                ViewModelSubmission sub = new ViewModelSubmission();
                using (IcasieEntities entity = new IcasieEntities())
                {
                    var oldSub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                    sub.SubmissionId    = oldSub.SubmissionId;
                    sub.Title           = oldSub.Title;
                    sub.FullPaperStatus = fullPaperStatus;
                    sub.Comment         = comment;
                }

                return(View(sub));
            }

            try
            {
                using (IcasieEntities entity = new IcasieEntities())
                {
                    var sub = entity.Submissions.SingleOrDefault(c => c.SubmissionId == id);
                    sub.Comment         = comment;
                    sub.FullPaperStatus = fullPaperStatus;
                    conferenceId        = sub.ConferenceId;

                    sub.FormatCheckingDate = DateTime.Now;

                    string currentUserEmail = HttpContext.User.Identity.Name;

                    int userId = entity.Users.SingleOrDefault(c => c.Email == currentUserEmail).UserId;

                    sub.FormatCheckerId = userId;

                    if (fullPaperStatus == Constant.FullPaperStatus.FormatChecked)
                    {
                        sub.FormatCheckingResult         = null;
                        sub.FormatCheckingResultFileName = null;

                        var           conferenceName = entity.Conferences.SingleOrDefault(c => c.ConferenceId == sub.ConferenceId).Name;
                        var           title          = sub.Title;
                        List <string> reviewerEmail  = new List <string>();

                        reviewerEmail.Add(entity.Users.SingleOrDefault(c => c.UserId == sub.ReviewedBy).Email);
                        Task.Run(() => Helper.EmailHelper.SendEmailNotification(reviewerEmail, Constant.NotificationMode.AssignReviewer, conferenceName, title));
                    }
                    else
                    {
                        if (file != null)
                        {
                            using (Stream inputStream = file.InputStream)
                            {
                                MemoryStream memoryStream = inputStream as MemoryStream;
                                if (memoryStream == null)
                                {
                                    memoryStream = new MemoryStream();
                                    inputStream.CopyTo(memoryStream);
                                }
                                sub.FormatCheckingResult         = memoryStream.ToArray();
                                sub.FormatCheckingResultFileName = file.FileName;
                            }
                        }
                    }


                    entity.SaveChanges();
                }
            }
            catch (DbEntityValidationException ex)
            {
            }


            return(RedirectToAction("Index", new { id = conferenceId }));
        }