public ActionResult EditPost(int? id, PengeluaranObat pengeluaranobat, string jmlsblmedit)
        {
            ViewBag.E = false;

            //tanggal tdk blh kosong
            if (pengeluaranobat.Tanggal == null)
            {
                ViewBag.E = true;
                ViewBag.E1 = true;
            }

            //jumlah obat tdk blh kosong
            if (pengeluaranobat.Jumlah == null)
            {
                ViewBag.E = true;
                ViewBag.E2 = true;
            }

            //jumlah obat harus bilangan positif
            string jumlah = pengeluaranobat.Jumlah.ToString();
            if (pengeluaranobat.Jumlah != null)
            {
                if (!System.Text.RegularExpressions.Regex.IsMatch(jumlah, "^[0-9]+$"))
                {
                    ViewBag.E = true;
                    ViewBag.E3 = true;
                }
            }

            //jumlah obat tdk blh lebih dari stok saat edit
            var stoksblmedit = (from i in db.StokObat
                                where i.ObatID == pengeluaranobat.ObatID
                                where i.KlinikID == 2
                                select i.Stok).FirstOrDefault().ToString();
            var intstoksblmedit = int.Parse(stoksblmedit);
            var intjmlsblmedit = int.Parse(jmlsblmedit);
            var stoksaatedit = intstoksblmedit + intjmlsblmedit;

            //.kasus edit pengeluaran obat untuk klinik DMG
            var stoksblmeditdmg = (from i in db.StokObat
                                   where i.ObatID == pengeluaranobat.ObatID
                                   where i.KlinikID == 1
                                   select i.Stok).FirstOrDefault().ToString();
            var intstoksblmeditdmg = int.Parse(stoksblmeditdmg);
            var stoksaateditdmg = intstoksblmeditdmg - intjmlsblmedit;

            if (pengeluaranobat.Jumlah != null)
            {
                var jmlsaatedit = pengeluaranobat.Jumlah.ToString();
                var intjmlsaatedit = int.Parse(jmlsaatedit);

                if (intjmlsaatedit > stoksaatedit)
                {
                    ViewBag.E = true;
                    ViewBag.E4 = true;
                    ViewBag.stoksaatedit = stoksaatedit;
                }
                if (stoksaateditdmg < 0 && intjmlsaatedit < Math.Abs(stoksaateditdmg) && pengeluaranobat.TujuanKlinikID == 1)
                {
                    ViewBag.E = true;
                    ViewBag.E5 = true;
                    ViewBag.stoksaateditdmg = Math.Abs(stoksaateditdmg);
                    ViewBag.stoksaatedit = stoksaatedit;
                }
            }

            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            var pengeluaranupdate = db.PengeluaranObat.Where(i => i.ID == id).Single();
            if (TryUpdateModel(pengeluaranupdate, "",
                new string[] { "ID", "ObatID", "Jumlah", "Tanggal" }) && !ViewBag.E)
            {
                try
                {
                    db.Entry(pengeluaranupdate).State = EntityState.Modified;
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch (RetryLimitExceededException)
                {
                    //log the error, uncommend dex and add a line here to write a log.
                    ModelState.AddModelError("", "Unable to save changes. Try Again, and if the problem persists, see your system administrator.");
                }
            }
            //kalau gagal, kembali ke action edit
            return RedirectToAction("Edit", new { E = ViewBag.E, E1 = ViewBag.E1, E2 = ViewBag.E2, E3 = ViewBag.E3, E4 = ViewBag.E4, S = ViewBag.stoksaatedit, E5 = ViewBag.E5, SD = ViewBag.stoksaateditdmg });
        }
        public ActionResult Create(PengeluaranObat hispengeluaranobat)
        {
            if (ModelState.IsValid)
            {
                /*
                int count = Int32.Parse(Request["count"]);
                for (int kep = 1; kep <= count; kep++)
                {
                    var Jumlah = Request["Jumlah" + kep + ""].ToString();
                    var ObatID = Request["ObatID" + kep + ""].ToString();
                    if (Jumlah == null)
                        Int32.Parse(Jumlah);
                    hispengeluaranobat.Jumlah= Int32.Parse(Jumlah);
                    hispengeluaranobat.ObatID = Int32.Parse(ObatID);
                    db.PengeluaranObat.Add(hispengeluaranobat);
                    db.SaveChanges();
                }
                return RedirectToAction("Index");
                */

                int count = Int32.Parse(Request["count"]);
                ViewBag.count = count;
                var arrayJumlah = new string[100];
                var arrayObat = new string[100];
                var arrayONama = new string[100];
                int[] arrayObatIDInt = new int[100];
                bool adaEN = false;
                bool adaEJ = false;
                bool adaEO = false;
                bool adaEJ2 = false;
                string baris1 = "", baris2 = "", baris3 = "";

                var Nama = Request["PasienID"];
                if (!String.IsNullOrEmpty(Nama))
                {
                    ViewBag.NamaError = "";
                    ViewBag.Nama = Nama;
                }
                else
                {
                    ViewBag.Nama = "";
                    adaEN = true;
                }

                for (int kepo = 1; kepo <= count; kepo++)
                {
                    var Jumlah = Request["Jumlah" + kepo + ""];
                    if (!String.IsNullOrEmpty(Jumlah))
                    {
                        ViewBag.JumlahError = "";
                        arrayJumlah[kepo] = Jumlah;
                    }
                    else
                    {
                        arrayJumlah[kepo] = "";
                        adaEJ = true;
                        if (baris1 == "")
                            baris1 += kepo.ToString();
                        else
                            baris1 += ", " + kepo.ToString();
                    }

                    var ObatID = Request["ObatID" + kepo + ""];
                    if (!String.IsNullOrEmpty(ObatID) && ObatID != "--Pilih Obat--")
                    {
                        //@ViewBag.JumlahError = "";
                        string[] words = ObatID.Split('&');
                        arrayObatIDInt[kepo] = int.Parse(words[0]);
                        //ViewBag.word = ObatID;
                        arrayONama[kepo] = words[1];
                        arrayObat[kepo] = ObatID;

                        string[] stok = words[1].Split(':', '[', ']');
                        //ViewBag.Coba = stok[2];
                        int now = 0;
                        if (!String.IsNullOrEmpty(Jumlah))
                        {
                            now = int.Parse(Jumlah);
                        }
                        if (now > int.Parse(stok[2]))
                        {
                            adaEJ2 = true;
                            if (baris3 == "")
                                baris3 += kepo.ToString();
                            else
                                baris3 += ", " + kepo.ToString();
                        }
                    }
                    else
                    {
                        //ViewBag.JumlahError = "Form nama obat tidak boleh kosong";
                        arrayObat[kepo] = "";
                        adaEO = true;
                        if (baris2 == "")
                            baris2 += kepo.ToString();
                        else
                            baris2 += ", " + kepo.ToString();
                    }
                }

                if (adaEJ) ViewBag.JumlahError = "Jumlah obat harus diisi pada baris " + baris1 + ".";
                if (adaEO) ViewBag.ObatError = "Nama obat harus diisi pada baris " + baris2 + ".";
                if (adaEJ2) ViewBag.JumlahError2 = "Jumlah pengeluaran obat pada baris " + baris3 + " melebihi stok yang tersedia.";
                if (adaEN) ViewBag.NamaError = "Nama pasien harus diisi.";

                if (!adaEJ && !adaEO && !adaEJ2 && !adaEN)
                {
                    for (int kepo = 1; kepo <= count; kepo++)
                    {
                        hispengeluaranobat.Jumlah = Int32.Parse(arrayJumlah[kepo]);
                        hispengeluaranobat.ObatID = arrayObatIDInt[kepo];
                        db.PengeluaranObat.Add(hispengeluaranobat);
                        db.SaveChanges();
                    }
                    return RedirectToAction("Index");
                }
                ViewBag.Jumlah = arrayJumlah;
                ViewBag.ONama = arrayONama;
                ViewBag.Obat = arrayObat;

                ViewBag.KlinikID = new SelectList(db.Klinik, "ID", "Nama", hispengeluaranobat.KlinikID);

                return View(hispengeluaranobat);
            }
            else
            {
                int count = Int32.Parse(Request["count"]);
                ViewBag.count = count;
                var arrayJumlah = new string[100];
                var arrayObat = new string[100];
                var arrayONama = new string[100];
                int[] arrayObatIDInt = new int[100];
                bool adaEN = false;
                bool adaEJ = false;
                bool adaEO = false;
                bool adaEJ2 = false;
                string baris1 = "", baris2 = "", baris3 = "";

                var Nama = Request["PasienID"];
                if (!String.IsNullOrEmpty(Nama))
                {
                    ViewBag.NamaError = "";
                    ViewBag.Nama = Nama;
                }
                else
                {
                    ViewBag.Nama = "";
                    adaEN = true;
                }

                for (int kepo = 1; kepo <= count; kepo++)
                {
                    var Jumlah = Request["Jumlah" + kepo + ""];
                    if (!String.IsNullOrEmpty(Jumlah))
                    {
                        ViewBag.JumlahError = "";
                        arrayJumlah[kepo] = Jumlah;
                    }
                    else
                    {
                        arrayJumlah[kepo] = "";
                        adaEJ = true;
                        if (baris1 == "")
                            baris1 += kepo.ToString();
                        else
                            baris1 += ", " + kepo.ToString();
                    }

                    var ObatID = Request["ObatID" + kepo + ""];
                    if (!String.IsNullOrEmpty(ObatID) && ObatID != "--Pilih Obat--")
                    {
                        //@ViewBag.JumlahError = "";
                        string[] words = ObatID.Split('&');
                        arrayObatIDInt[kepo] = int.Parse(words[0]);
                        //ViewBag.word = ObatID;
                        arrayONama[kepo] = words[1];
                        arrayObat[kepo] = ObatID;

                        string[] stok = words[1].Split(':', '[', ']');
                        //ViewBag.Coba = stok[2];
                        int now = 0;
                        if (!String.IsNullOrEmpty(Jumlah))
                        {
                            now = int.Parse(Jumlah);
                        }
                        if (now > int.Parse(stok[2]))
                        {
                            adaEJ2 = true;
                            if (baris3 == "")
                                baris3 += kepo.ToString();
                            else
                                baris3 += ", " + kepo.ToString();
                        }
                    }
                    else
                    {
                        //ViewBag.JumlahError = "Form nama obat tidak boleh kosong";
                        arrayObat[kepo] = "";
                        adaEO = true;
                        if (baris2 == "")
                            baris2 += kepo.ToString();
                        else
                            baris2 += ", " + kepo.ToString();
                    }
                }

                if (adaEJ) ViewBag.JumlahError = "Jumlah obat harus diisi pada baris " + baris1 + ".";
                if (adaEO) ViewBag.ObatError = "Nama obat harus diisi pada baris " + baris2 + ".";
                if (adaEJ2) ViewBag.JumlahError2 = "Jumlah pengeluaran obat pada baris " + baris3 + " melebihi stok yang tersedia.";
                if (adaEN) ViewBag.NamaError = "Nama pasien harus diisi.";

                ViewBag.Jumlah = arrayJumlah;
                ViewBag.ONama = arrayONama;
                ViewBag.Obat = arrayObat;

                ViewBag.KlinikID = new SelectList(db.Klinik, "ID", "Nama", hispengeluaranobat.KlinikID);

                //return RedirectToAction("Index");
                return View(hispengeluaranobat);
            }
        }