public ActionResult AddNewArticle(long newsClassID, long quoteUniqueId1, long? quoteUniqueId2, long? quoteUniqueId3)
        {
            //Todo:認証処理 AOPでやりたい。 一旦Session変数を参照し判定
            if (Session["CurrentUser"] == null)
            {
                return RedirectToActionPermanent("Login", "Member", new { area = "" });
            }

            var userArticleInfoViewModel = new UserArticleInfoViewModel();
            userArticleInfoViewModel.NewsClassId = newsClassID;
            userArticleInfoViewModel.QuoteUniqueId1 = quoteUniqueId1;
            userArticleInfoViewModel.QuoteUniqueId2 = quoteUniqueId2 ?? 0;
            userArticleInfoViewModel.QuoteUniqueId3 = quoteUniqueId3 ?? 0;
            userArticleInfoViewModel.Status = 1;
            userArticleInfoViewModel.Title = string.Empty;
            userArticleInfoViewModel.Body = string.Empty;
            userArticleInfoViewModel.ImageLink = UserArticleInfoViewModel.DefaultImageLink;

            userArticleInfoViewModel = AppliedDetailContent(userArticleInfoViewModel);

            return View(userArticleInfoViewModel);
        }
 public UserArticleInfoViewModel AppliedDetailContent(UserArticleInfoViewModel input)
 {
     UserArticleInfoViewModel model = input;
     switch (model.NewsClassId)
     {
         case 1:
             model.NewsInfo = (from brief in memberContext.BriefNews
                               join photo in memberContext.PhotoNews on brief.NewsItemID equals photo.NewsItemID into br_photo
                               from tmp in br_photo.DefaultIfEmpty()
                               where (brief.Status == Constants.NEWS_VALID_STATUS && brief.CarryLimitDate >= DateTime.Now)
                               select new NewsInfoViewModel
                               {
                                   NewsItemID = brief.NewsItemID,
                                   DeliveryDate = brief.DeliveryDate,
                                   Headline = brief.Headline,
                                   newstext = brief.newstext,
                                   SentFrom = brief.SentFrom,
                                   Duid = tmp.Duid,
                                   Content = tmp.Content,
                                   SubHeadline = brief.SubHeadline,
                               } into news_photo
                               where (news_photo.NewsItemID == model.QuoteUniqueId1
                                 && (news_photo.Duid == Constants.IMAGE_DUID || news_photo.Duid == null))
                               select news_photo).FirstOrDefault();
             if (model.SportID <= 0)
             {
                 var sportTopic = (from bn in memberContext.BriefNews
                                   join nt in memberContext.NewsTopic on bn.NewsItemID equals nt.NewsItemID
                                   join tm in memberContext.TopicMaster on nt.TopicID equals tm.TopicID
                                   where bn.NewsItemID == model.QuoteUniqueId1 && tm.ClassificationType == 1
                                   select tm).FirstOrDefault();
                 if (sportTopic != null)
                     model.SportID = sportTopic.SportID;
             }
             break;
         case 2:
             switch (model.QuoteUniqueId1)
             {
                 case 1: // NPB
                     model.NpbTeamInfo = (new NpbTeamInfoTeamTopController()).GetTeamInfo(Convert.ToInt32(model.QuoteUniqueId3));
                     break;
                 case 2: //JLeague
                     int jType = 0;
                     var teamID = Convert.ToInt32(model.QuoteUniqueId3);
                     if (Session["JType"] != null)
                     {
                         jType = Convert.ToInt32(Session["JType"].ToString());
                     }
                     else
                     {
                         jType = GetJlgTypeByTeamId(teamID);
                     }
                     int gameKindID = 0;
                     switch (jType)
                     {
                         case 1:
                             gameKindID = 2;
                             break;
                         case 2:
                             gameKindID = 6;
                             break;
                     }
                     model.JlgTeamInfo = (new JlgTeamInfoTopController()).GetTeamInfo(teamID, gameKindID);
                     JlgEntities jlg = new JlgEntities();
                     model.RankInfoRT = (from r in jlg.RankInfoRT where r.TeamID == teamID select r).FirstOrDefault();
                     break;
                 case 3: //MLB
                     model.MlbTeamInfo = (new MlbTeamInfoTeamTopController()).GetTeamInfo(Convert.ToInt32(model.QuoteUniqueId3));
                     break;
                 case 4:
                     break;
             }
             break;
         case 3:
             switch (model.QuoteUniqueId1)
             {
                 case 1: //Npb
                     break;
                 case 2: //Jleague
                     var teamID = Convert.ToInt32(model.QuoteUniqueId2);
                     var playerID = Convert.ToInt32(model.QuoteUniqueId3);
                     model.PlayerInfoYear = (new JlgTeamInfoPlayerDetailController()).GetPlayerInfo(teamID, playerID);
                     model.PlayerSum = (new JlgTeamInfoPlayerDetailController()).GetPlayerInfo_Sum(teamID, playerID);
                     break;
                 case 3: //Mlb
                     model.MlbTeamInfo = (new MlbTeamInfoTeamTopController()).GetTeamInfo(Convert.ToInt32(model.QuoteUniqueId2));
                     break;
             }
             break;
         case 6:
             ViewBag.Year = model.QuoteUniqueId2 / 100;
             ViewBag.Month = model.QuoteUniqueId2 % 100;
             //ViewBag.NumType = model.QuoteUniqueId3;
             //ViewBag.OrtherMemberId = model.QuoteUniqueId1;
             break;
     }
     model.RelatedTopicList = GetRelatedTopicofAPost(model.NewsClassId, model.QuoteUniqueId1, model.QuoteUniqueId2, model.QuoteUniqueId3);
     return model;
 }
        public ActionResult EditNewUserArticle(UserArticleInfoViewModel model)
        {
            model = AppliedDetailContent(model);
            if (model.ContributeId > 0)
            {
                var article = from a in memberContext.Contribution
                              where a.ContributeId == model.ContributeId
                              select a;
                if (article != null)
                {
                    if (string.IsNullOrEmpty(model.OldImageLink) && !string.IsNullOrEmpty(model.ImageLink) && !model.ImageLink.Contains("dummy_2.png"))
                    {
                        string imagePath = "\\Content\\img\\upload\\contribution\\";
                        string tempImagePath = "\\Content\\img\\upload\\contribution\\tmp_dir\\";
                        string rootPath = Server.MapPath("~");
                        string tempFilePath = Path.GetFullPath(rootPath + tempImagePath);
                        string filePath = Path.GetFullPath(rootPath + imagePath);
                        string fileName = "";
                        try
                        {
                            if (!System.IO.Directory.Exists(tempFilePath))
                                System.IO.Directory.CreateDirectory(tempFilePath);

                            fileName = model.ImageLink.Split('/').Last();
                            if (!string.IsNullOrEmpty(fileName) && System.IO.File.Exists(filePath + fileName))
                            {
                                System.IO.File.Copy(filePath + fileName, tempFilePath + fileName);
                                model.ImageLink = @"~/Content/img/upload/contribution/tmp_dir/" + fileName;
                                model.OldImageLink = fileName;
                                model.ImageName = fileName;
                            }

                        }
                        catch
                        {
                            fileName = "";
                        }
                    }
                }
            }
            return View(model);
        }
 public ActionResult EditNewUserArticle()
 {
     if (Session["CurrentUser"] == null)
     {
         return RedirectToAction("Login", "Member");
     }
     else
     {
         UserArticleInfoViewModel model = new UserArticleInfoViewModel();
         if (string.IsNullOrEmpty(model.Title))
         {
             return RedirectToAction("Index", "Home");
         }
         else
         {
             return View();
         }
     }
 }
        public ActionResult DeleteNewUserArticle(UserArticleInfoViewModel model)
        {
            if (Session["CurrentUser"] == null)
            {
                return RedirectToAction("Login", "Member");
            }
            string rootPath = Server.MapPath("~");
            string tempImagePath = "\\Content\\img\\upload\\contribution\\tmp_dir\\";
            string tempFilePath = Path.GetFullPath(rootPath + tempImagePath);
            string imagePath = "\\Content\\img\\upload\\contribution\\";
            string filePath = Path.GetFullPath(rootPath + imagePath);
            try
            {
                if (System.IO.Directory.Exists(tempFilePath))
                    DeleteTemperaryDir(@"~/Content/img/upload/contribution/tmp_dir/");
            }
            catch
            {
                return View("Error");
            }
            bool transactionResult = false;
            if (model.ContributeId > 0)
            {
                Contribution record = (from c in memberContext.Contribution
                                       where c.ContributeId == model.ContributeId
                                       select c).FirstOrDefault();
                if (record != null)
                {
                    using (var newArticleTransaction = memberContext.Database.BeginTransaction())
                    {
                        var quoteTopics = from q in memberContext.QuotTopic
                                          where q.ContributeID == model.ContributeId
                                          select q;
                        var contributedOrgs = from co in memberContext.ContributionQuotOrg
                                              where co.ContributeId == model.ContributeId
                                              select co;

                        try
                        {
                            foreach (var qt in quoteTopics)
                            {
                                memberContext.QuotTopic.Remove(qt);
                            }
                            foreach (var cqo in contributedOrgs)
                            {
                                memberContext.ContributionQuotOrg.Remove(cqo);
                            }
                            memberContext.Contribution.Remove(record);
                            memberContext.SaveChanges();

                            newArticleTransaction.Commit();
                            transactionResult = true;
                        }
                        catch
                        {
                            transactionResult = false;
                            newArticleTransaction.Rollback();
                        }
                    }
                    if (transactionResult && !string.IsNullOrEmpty(model.OldImageLink))
                    {
                        if (System.IO.File.Exists(filePath + model.OldImageLink))
                        {
                            FileInfo f = new FileInfo(System.Web.Hosting.HostingEnvironment.MapPath(@"~/Content/img/upload/contribution/" + model.OldImageLink));
                            f.Delete();
                        }
                    }
                }
            }
            return RedirectToAction("Index");
        }
        public ActionResult ConfirmUserArticle(UserArticleInfoViewModel model)
        {
            //Todo:認証処理 AOPでやりたい。 一旦Session変数を参照し判定
            if (Session["CurrentUser"] == null)
            {
                return RedirectToActionPermanent("Login", "Member", new { area = "" });
            }

            ViewBag.pageNO = "5-4-1";
            try
            {
                long memberID = Convert.ToInt64(Session["CurrentUser"]);
                string imageDataUrl = model.DataURL;
                string rootPath = Server.MapPath("~");
                //string imagePath = "\\Content\\img\\upload\\contribution\\";
                string tempImagePath = "\\Content\\img\\upload\\contribution\\tmp_dir\\";
                //string filePath = Path.GetFullPath(rootPath + imagePath);
                string tempFilePath = Path.GetFullPath(rootPath + tempImagePath);
                string fileName = "";
                try
                {
                    if (model.ContributeId <= 0 || string.IsNullOrEmpty(model.ImageLink) || !string.IsNullOrEmpty(model.DataURL))
                    {
                        if (!System.IO.Directory.Exists(tempFilePath))
                            System.IO.Directory.CreateDirectory(tempFilePath);
                        if (!string.IsNullOrEmpty(model.DataURL))
                        {
                            fileName = Utils.SaveImageToDirectory(imageDataUrl, tempFilePath);
                            model.ImageName = fileName;
                            if (!string.IsNullOrEmpty(fileName))
                            {
                                model.ImageLink = @"~/Content/img/upload/contribution/tmp_dir/" + fileName;
                            }
                        }
                        else
                        {
                            model.ImageLink = UserArticleInfoViewModel.DefaultImageLink;
                        }

                    }
                }
                catch
                {
                    fileName = "";
                }
                if (model.ContributeId <= 0)
                    model.ContributeDate = System.DateTime.Now;
                model.MemberId = memberID;
                model.Nickname = memberContext.Member.SingleOrDefault(m => m.MemberId == memberID).Nickname;
                //model.RelatedTopicsList = (UserArticleRelatedTopicViewModel)Session["RelatedTopic"];
                //Session["NewPost"] = model;
                model = AppliedDetailContent(model);
                return View(model);
                //}
            }
            catch
            {
                return View("Error");
            }
        }
        public ActionResult ConfirmUserArticle()
        {
            //Todo:認証処理 AOPでやりたい。 一旦Session変数を参照し判定
            if (Session["CurrentUser"] == null)
            {
                return RedirectToActionPermanent("Login", "Member", new { area = "" });
            }

            var model = new UserArticleInfoViewModel();
            if (string.IsNullOrEmpty(model.Title))
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ViewBag.pageNO = "5-4-1";
                return View();
            }
        }
        public ActionResult CompleteAddNewArticle(UserArticleInfoViewModel model)
        {
            //Todo:認証処理 AOPでやりたい。 一旦Session変数を参照し判定
            if (Session["CurrentUser"] == null)
            {
                return RedirectToActionPermanent("Login", "Member", new { area = "" });
            }

            ViewBag.pageNO = "5-4-2";
            bool transactionResult = true;
            List<QuotTopic> topicList = new List<QuotTopic>();
            Int64 memberId = Convert.ToInt64(Session["CurrentUser"].ToString());
            long newContributionID = 0;
            if (model != null)
            {
                if (model.ContributeId > 0)
                {
                    var article = (from a in memberContext.Contribution
                                   where a.ContributeId == model.ContributeId
                                   select a).FirstOrDefault();
                    if (article != null)
                    {
                        newContributionID = model.ContributeId;
                        if (ModelState.IsValid)
                        {
                            using (var newArticleTransaction = memberContext.Database.BeginTransaction())
                            {
                                try
                                {
                                    article.Title = model.Title;
                                    article.Body = model.Body;
                                    //article.MemberId = model.MemberId;
                                    if (!string.IsNullOrEmpty(model.ImageName))
                                    {
                                        article.ContributedPicture = @"~/Content/img/upload/contribution/" + model.ImageName;
                                    }
                                    //article.ContributeDate = model.ContributeDate;
                                    article.ModifiedDate = DateTime.Now;
                                    memberContext.Entry(article).State = EntityState.Modified;
                                    memberContext.SaveChanges();
                                    newArticleTransaction.Commit();
                                    transactionResult = true;
                                }
                                catch
                                {
                                    transactionResult = false;
                                    newArticleTransaction.Rollback();
                                }

                            }
                        }
                        if (transactionResult && !string.IsNullOrEmpty(model.OldImageLink))
                        {
                            string tempImagePath = "\\Content\\img\\upload\\contribution\\";
                            string rootPath = Server.MapPath("~");
                            string tempFilePath = Path.GetFullPath(rootPath + tempImagePath);
                            try
                            {
                                if (System.IO.File.Exists(tempFilePath + model.OldImageLink))
                                {
                                    FileInfo f = new FileInfo(System.Web.Hosting.HostingEnvironment.MapPath(@"~/Content/img/upload/contribution/" + model.OldImageLink));
                                    f.Delete();
                                }
                            }
                            catch
                            {
                                return View("Error");
                            }
                        }
                    }
                }
                else
                {
                    using (var newArticleTransaction = memberContext.Database.BeginTransaction())
                    {
                        try
                        {
                            var newContributeRow = new Contribution
                            {
                                Title = model.Title,
                                Body = model.Body,
                                MemberId = memberId,
                                ContributedPicture = @"~/Content/img/upload/contribution/" + model.ImageName,
                                ContributeDate = DateTime.Now,
                                ModifiedDate = DateTime.Now
                            };
                            memberContext.Contribution.Add(newContributeRow);
                            memberContext.SaveChanges();
                            newContributionID = newContributeRow.ContributeId;
                            var newContributeQuotRow = new ContributionQuotOrg
                            {
                                ContributeId = newContributeRow.ContributeId,
                                NewsClassId = model.NewsClassId,
                                QuoteUniqueId1 = model.QuoteUniqueId1,
                                QuoteUniqueId2 = model.QuoteUniqueId2,
                                QuoteUniqueId3 = model.QuoteUniqueId3,
                                Status = 1
                            };
                            memberContext.ContributionQuotOrg.Add(newContributeQuotRow);
                            topicList = GetAllTopicList(newContributeRow.ContributeId,
                                GetRelatedTopicofAPost(model.NewsClassId, model.QuoteUniqueId1, model.QuoteUniqueId2, model.QuoteUniqueId3));
                            memberContext.QuotTopic.AddRange(topicList);
                            memberContext.SaveChanges();
                            newArticleTransaction.Commit();
                            transactionResult = true;
                        }
                        catch
                        {
                            transactionResult = false;
                            newArticleTransaction.Rollback();
                        }

                    }
                }
                if (transactionResult)
                {
                    string rootPath = Server.MapPath("~");
                    string imagePath = "\\Content\\img\\upload\\contribution\\";
                    string tempImagePath = "\\Content\\img\\upload\\contribution\\tmp_dir\\";
                    string filePath = Path.GetFullPath(rootPath + imagePath);
                    string tempFilePath = Path.GetFullPath(rootPath + tempImagePath);
                    try
                    {
                        if (System.IO.File.Exists(tempFilePath + model.ImageName) && !string.IsNullOrEmpty(model.ImageName))
                        {
                            System.IO.File.Copy(tempFilePath + model.ImageName, filePath + model.ImageName);
                            DeleteTemperaryDir(@"~/Content/img/upload/contribution/tmp_dir/");
                        }
                        else
                        {
                            if (System.IO.Directory.Exists(tempFilePath))
                                DeleteTemperaryDir(@"~/Content/img/upload/contribution/tmp_dir/");
                        }
                    }
                    catch
                    {
                        return View("Error");
                    }

                    var articleListDefault = PostedController.GetRecentPosts(4);
                    var newPost = from a in articleListDefault
                                  where a.ContributeId == newContributionID
                                  select a;

                    return View("CompletePostArticle", newPost);
                }
            }
            else
            {
                return View("Error");
            }
            return View("Error");
        }