示例#1
0
        /// <summary>
        /// Check concurrecny in data
        /// </summary>
        /// <param name="d3010">Model object with data</param>
        /// <returns>
        /// if true then no concurrency
        /// if false then concurrency
        /// </returns>
        public Boolean CheckConcurrency(D3010 d3010)
        {
            Boolean rtnFlag = true;
            D3010   d3010db = db.D3010.Find(d3010.ORDERNO);

            if (d3010db != null)
            {
                if (d3010.UPDTDT != d3010db.UPDTDT)
                {
                    rtnFlag = false;
                }
            }
            return(rtnFlag);
        }
示例#2
0
        public ActionResult UpdateScheduleRegData([Bind(Include = "ORDERNO,DELISCHECNT,DELISCHEDT,DELISCHEQTY,REPLYDT,RECEIVEDT,RECEIVEKBN,UKECHARGECD,UPDTLNG,UPDTDT")] List <DC0060> dc0060, String orderNo, String remark, int scrollTop, int scrollGridVer, int scrollGridHor, DateTime D3010Updtdt)
        {
            if (Session["LoginUserid"] == null)
            {
                ViewData["ID"] = "Login";
                return(RedirectToAction("Index", "Login"));
            }
            ViewData["ID"] = "納期回答画面";
            DbContextTransaction dbTran = db.Database.BeginTransaction();
            var av_userid = new OracleParameter("av_userid", OracleDbType.Varchar2, Session["LoginUserid"], ParameterDirection.Input);
            var spSql     = "BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO(:av_userid); END; ";
            var spResult  = db.Database.ExecuteSqlCommand(spSql, av_userid);

            try
            {
                Boolean d310ConCurFlg = false;
                Boolean dc60ConFlg    = false;
                Boolean isDataUpd     = false;

                if (dc0060.Count() > 0)
                {
                    for (int i = 0; i < dc0060.Count; i++)
                    {
                        String orderno     = dc0060[i].ORDERNO;
                        Byte   delischecnt = dc0060[i].DELISCHECNT;

                        //Get DC0060 data from db
                        var dc0060db = (from dc60 in db.DC0060
                                        where dc60.ORDERNO == orderno && dc60.DELISCHECNT == delischecnt
                                        select dc60).FirstOrDefault();

                        //Case of update
                        if (dc0060db != null)
                        {
                            if ((dc0060db.DELISCHEDT != dc0060[i].DELISCHEDT) || (dc0060db.DELISCHEQTY != dc0060[i].DELISCHEQTY))
                            {
                                //DateTime updtLng = new DateTime (1970,1,1) + TimeSpan.FromMilliseconds(dc0060[i].UPDTLNG);
                                DateTime updtLng = new DateTime(1970, 1, 1) + TimeSpan.FromMilliseconds(dc0060[i].UPDTLNG) + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
                                var      date    = (new DateTime(1970, 1, 1)).AddMilliseconds(double.Parse(dc0060[i].UPDTLNG.ToString()));
                                if (dc0060db.UPDTDT != updtLng)
                                {
                                    dc60ConFlg = true;
                                    break;
                                }
                                else
                                {
                                    dc0060db.DELISCHEDT      = dc0060[i].DELISCHEDT;
                                    dc0060db.DELISCHEQTY     = dc0060[i].DELISCHEQTY;
                                    db.Entry(dc0060db).State = EntityState.Modified;
                                    isDataUpd = true;
                                }
                            }
                        }
                        //Case of insert
                        else
                        {
                            db.DC0060.Add(dc0060[i]);
                            isDataUpd = true;
                        }
                    }

                    //Case of delete
                    String ordernum = dc0060[0].ORDERNO;
                    List <KYOSAI_WEB.Models.DC0060> dc60db = (from dc60 in db.DC0060
                                                              where dc60.ORDERNO == ordernum
                                                              select dc60).ToList();
                    if (dc60db.Count() > 0)
                    {
                        for (int c1 = 0; c1 < dc60db.Count; c1++)
                        {
                            bool datafound = false;
                            for (int c2 = 0; c2 < dc0060.Count; c2++)
                            {
                                if ((dc60db[c1].ORDERNO == dc0060[c2].ORDERNO) && (dc60db[c1].DELISCHECNT == dc0060[c2].DELISCHECNT))
                                {
                                    datafound = true;
                                }
                            }
                            if (!datafound)
                            {
                                db.Entry(dc60db[c1]).State = EntityState.Deleted;
                                isDataUpd = true;
                            }
                        }
                    }

                    //Get D3010 data for update
                    D3010 d3010Db = db.D3010.Find(dc0060[0].ORDERNO);

                    if (d3010Db != null && d3010Db.BCCMT != remark)
                    {
                        if (d3010Db.UPDTDT != D3010Updtdt)
                        {
                            d310ConCurFlg = true;
                        }
                        else
                        {
                            d3010Db.BCCMT           = remark;
                            db.Entry(d3010Db).State = EntityState.Modified;
                            isDataUpd = true;
                        }
                    }
                }

                var bolDataCommit = false;
                if (isDataUpd && !d310ConCurFlg && !dc60ConFlg)
                {
                    db.Configuration.ValidateOnSaveEnabled = false;
                    db.SaveChanges();
                    db.Configuration.ValidateOnSaveEnabled = true;
                    dbTran.Commit();
                    bolDataCommit = true;
                }

                if ((d310ConCurFlg || dc60ConFlg))
                {
                    if (isDataUpd && !bolDataCommit)
                    {
                        dbTran.Rollback();
                    }
                    TempData["ErrMsg"] = "他の端末にて更新中です。しばらく経ってから再度お試しください。";
                    TempData.Keep("ErrMsg");
                }
            }
            catch (Exception e)
            {
                dbTran.Rollback();
                ViewData["errMsgForErrorPage"] = e;
                return(View("~/Views/Shared/Error.cshtml"));
            }

            Session["scrollTop"]     = scrollTop;
            Session["scrollGridVer"] = scrollGridVer;
            Session["scrollGridHor"] = scrollGridHor;

            return(RedirectToAction("getData", "D3010", new
            {
                @SUPPCD = (Session["SUPPCD"] == null ? "" : Session["SUPPCD"].ToString()),
                @ORDERNO = (Session["ORDERNO"] == null ? "" : Session["ORDERNO"].ToString()),
                @ORDERNOTO = (Session["ORDERNOTO"] == null ? "" : Session["ORDERNOTO"].ToString()),
                @SEHMNO = (Session["SEHMNO"] == null ? "" : Session["SEHMNO"].ToString()),
                @SEHMNOTO = (Session["SEHMNOTO"] == null ? "" : Session["SEHMNOTO"].ToString()),
                @HMNM = (Session["HMNM"] == null ? "" : Session["HMNM"].ToString()),
                @ORDERDTFR = (Session["ORDERDTFR"] == null ? "" : Session["ORDERDTFR"].ToString()),
                @ORDERDTTO = (Session["ORDERDTTO"] == null ? "" : Session["ORDERDTTO"].ToString()),
                @MAKERIPNM = (Session["MAKERIPNM"] == null ? "" : Session["MAKERIPNM"].ToString()),
                @AGREEDFR = (Session["AGREEDFR"] == null ? "" : Session["AGREEDFR"].ToString()),
                @AGREEDTO = (Session["AGREEDTO"] == null ? "" : Session["AGREEDTO"].ToString()),
                @DELINM = (Session["DELINM"] == null ? "" : Session["DELINM"].ToString()),
                @REQDELIDTFR = (Session["REQDELIDTFR"] == null ? "" : Session["REQDELIDTFR"].ToString()),
                @REQDELIDTTO = (Session["REQDELIDTTO"] == null ? "" : Session["REQDELIDTTO"].ToString()),
                @CHARGENM = (Session["CHARGENM"] == null ? "" : Session["CHARGENM"].ToString()),
                @STATE1 = (Session["STATE1"] == null ? "" : Session["STATE1"].ToString()),
                @STATE2 = (Session["STATE2"] == null ? "" : Session["STATE2"].ToString()),
                @REPLYKBN1 = (Session["REPLYKBN1"] == null ? "" : Session["REPLYKBN1"].ToString()),
                @REPLYKBN2 = (Session["REPLYKBN2"] == null ? "" : Session["REPLYKBN2"].ToString()),
                @REPLYKBN3 = (Session["REPLYKBN3"] == null ? "" : Session["REPLYKBN3"].ToString()),
                @OrderSeachFlg = (Session["OrderSeachFlg"] == null ? "0" : Session["OrderSeachFlg"].ToString()),
                @ShmnoSeachFlg = (Session["ShmnoSeachFlg"] == null ? "" : Session["ShmnoSeachFlg"].ToString())
            }));
        }
示例#3
0
        public ActionResult UpdateData([Bind(Include = "ORDERNO,ORDERKBN,ORDERDT,SUPPCD,DELICD,HMNO,ORDERQTY,ORDERUNIT,PRICEKBN,PRICE,PRICEUNIT,AMOUNT,TAXKBN,AGREED,REPLY,STATE,REMARK,PRTKBN1,PRTKBN2,DECIKBN,REPLANKBN,SORDERNO,EXCEKBN,RATE,INSTID,INSTDT,INSTTERM,INSTPRGNM,UPDTID,UPDTDT,UPDTTERM,UPDTPRGNM,KYOTENCD,JITANCD,JORDERNO,SZCMT,BCCMT,SHEETNO,ROWNO,PRTDT1,REPLYDLDT,REQDELIDT,ADJREQKBN,MORDERNO,GAITNKBN")] List <D3010> d3010, int scrollTop, int scrollGridVer, int scrollGridHor)
        {
            if (Session["LoginUserid"] == null)
            {
                ViewData["ID"] = "Login";
                return(RedirectToAction("Index", "Login"));
            }

            ViewData["ID"] = "納期回答画面";
            DbContextTransaction dbTran = db.Database.BeginTransaction();
            var av_userid = new OracleParameter("av_userid", OracleDbType.Varchar2, Session["LoginUserid"], ParameterDirection.Input);
            var spSql     = "BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO(:av_userid); END; ";
            var spResult  = db.Database.ExecuteSqlCommand(spSql, av_userid);

            try
            {
                List <D3010> d3010List = d3010;
                if (d3010List.Count > 0)
                {
                    Boolean isUpdate    = false;
                    Boolean IsConCurErr = false;
                    for (int i = 0; i < d3010List.Count; i++)
                    {
                        D3010 d3010Db = db.D3010.Find(d3010List[i].ORDERNO);
                        if ((d3010Db.REPLY != d3010List[i].REPLY) || (d3010List[i].BCCMT != d3010Db.BCCMT))
                        {
                            if (CheckConcurrency(d3010List[i]))
                            {
                                d3010Db.REPLY           = d3010List[i].REPLY;
                                d3010Db.BCCMT           = d3010List[i].BCCMT;
                                db.Entry(d3010Db).State = EntityState.Modified;

                                List <DC0060> dC0060Lst = db.DC0060.Where(m => m.ORDERNO == d3010Db.ORDERNO).ToList();

                                //発注分納情報 の レコード件数 <= 1件であった場合は、発注情報、発注分納情報への更新処理を実行する。
                                if (dC0060Lst != null && dC0060Lst.Count == 1)
                                {
                                    DC0060 dC0060 = dC0060Lst[0];
                                    dC0060.DELISCHEDT      = d3010Db.REPLY;
                                    db.Entry(dC0060).State = EntityState.Modified;
                                }

                                db.Configuration.ValidateOnSaveEnabled = false;
                                db.SaveChanges();
                                db.Configuration.ValidateOnSaveEnabled = true;

                                isUpdate = true;
                            }
                            else
                            {
                                IsConCurErr = true;
                                break;
                            }
                        }
                    }
                    if (isUpdate && !IsConCurErr)
                    {
                        dbTran.Commit();
                    }
                    if (IsConCurErr)
                    {
                        if (isUpdate)
                        {
                            dbTran.Rollback();
                        }
                        TempData["ErrMsg"] = "他の端末にて更新中です。しばらく経ってから再度お試しください。";
                        TempData.Keep("ErrMsg");
                    }
                }
            }
            catch (Exception e)
            {
                dbTran.Rollback();
                ViewData["errMsgForErrorPage"] = e;
                return(View("~/Views/Shared/Error.cshtml"));
            }
            Session["scrollTop"]     = scrollTop;
            Session["scrollGridVer"] = scrollGridVer;
            Session["scrollGridHor"] = scrollGridHor;
            //ViewBag.HMNO = new SelectList(db.M0010, "HMNO", "HMNM", d3010.HMNO);

            return(RedirectToAction("getData", "D3010", new
            {
                @SUPPCD = (Session["SUPPCD"] == null ? "" : Session["SUPPCD"].ToString()),
                @ORDERNO = (Session["ORDERNO"] == null ? "" : Session["ORDERNO"].ToString()),
                @ORDERNOTO = (Session["ORDERNOTO"] == null ? "" : Session["ORDERNOTO"].ToString()),
                @SEHMNO = (Session["SEHMNO"] == null ? "" : Session["SEHMNO"].ToString()),
                @SEHMNOTO = (Session["SEHMNOTO"] == null ? "" : Session["SEHMNOTO"].ToString()),
                @HMNM = (Session["HMNM"] == null ? "" : Session["HMNM"].ToString()),
                @ORDERDTFR = (Session["ORDERDTFR"] == null ? "" : Session["ORDERDTFR"].ToString()),
                @ORDERDTTO = (Session["ORDERDTTO"] == null ? "" : Session["ORDERDTTO"].ToString()),
                @MAKERIPNM = (Session["MAKERIPNM"] == null ? "" : Session["MAKERIPNM"].ToString()),
                @AGREEDFR = (Session["AGREEDFR"] == null ? "" : Session["AGREEDFR"].ToString()),
                @AGREEDTO = (Session["AGREEDTO"] == null ? "" : Session["AGREEDTO"].ToString()),
                @DELINM = (Session["DELINM"] == null ? "" : Session["DELINM"].ToString()),
                @REQDELIDTFR = (Session["REQDELIDTFR"] == null ? "" : Session["REQDELIDTFR"].ToString()),
                @REQDELIDTTO = (Session["REQDELIDTTO"] == null ? "" : Session["REQDELIDTTO"].ToString()),
                @CHARGENM = (Session["CHARGENM"] == null ? "" : Session["CHARGENM"].ToString()),
                @STATE1 = (Session["STATE1"] == null ? "" : Session["STATE1"].ToString()),
                @STATE2 = (Session["STATE2"] == null ? "" : Session["STATE2"].ToString()),
                @REPLYKBN1 = (Session["REPLYKBN1"] == null ? "" : Session["REPLYKBN1"].ToString()),
                @REPLYKBN2 = (Session["REPLYKBN2"] == null ? "" : Session["REPLYKBN2"].ToString()),
                @REPLYKBN3 = (Session["REPLYKBN3"] == null ? "" : Session["REPLYKBN3"].ToString()),
                @OrderSeachFlg = (Session["OrderSeachFlg"] == null ? "0" : Session["OrderSeachFlg"].ToString()),
                @ShmnoSeachFlg = (Session["ShmnoSeachFlg"] == null ? "" : Session["ShmnoSeachFlg"].ToString())
            }));
        }