public ActionResult Add(DaftarHargaKonsolidasi model)
        {
            //validasi kondisi
            DaftarHargaKonsolidasiItem[] result = JsonConvert.DeserializeObject <DaftarHargaKonsolidasiItem[]>(model.StrItem);
            model.listItem = result.ToList();

            DaftarHargaKonsolidasiAttachment[] resultAtt = JsonConvert.DeserializeObject <DaftarHargaKonsolidasiAttachment[]>(model.StrAttachment);
            model.listAtt = resultAtt.ToList();

            int idx = 0;

            foreach (DaftarHargaKondisi item in model.listKondisi.Where(d => d.IsDelete == false))
            {
                if (item.kondisi != "Biaya Multidrop" && item.IsDefault == true && item.IsInclude == true && item.IsBill == false && item.value == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].value", "Nilai harus diisi.");
                }
                if (item.kondisi == "Biaya Multidrop" && item.IsKota == true && item.ValKota == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].ValKota", "Nilai harus diisi.");
                }
                if (item.kondisi == "Biaya Multidrop" && item.IsTitik == true && item.ValTitik == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].ValTitik", "Nilai harus diisi.");
                }
                if (item.IsDefault == false)
                {
                    if (item.kondisi == "" || item.kondisi == null)
                    {
                        ModelState.AddModelError("listKondisi[" + idx + "].kondisi", "Nama kondisi harus diisi.");
                    }
                    if (item.IsInclude == true && item.IsBill == false && item.value == null)
                    {
                        ModelState.AddModelError("listKondisi[" + idx + "].value", "Nilai harus diisi.");
                    }
                }

                idx++;
            }


            if (ModelState.IsValid)
            {
                bool palid = true;
                if (RepoDHKonsolidasi.IsPeriodValid(model.PeriodStart.Value, model.PeriodEnd.Value, model.IdCust.Value))
                {
                    ModelState.AddModelError("PeriodStart", "Periode awal tidak boleh overlaping.");
                    ModelState.AddModelError("PeriodEnd", "Periode akhir tidak boleh overlaping.");
                    palid = false;
                }
                if (!palid)
                {
                    return(View("Form", model));
                }

                Context.DaftarHargaKonsolidasi dbitem = new Context.DaftarHargaKonsolidasi();
                model.setDb(dbitem);
                RepoDHKonsolidasi.save(dbitem, UserPrincipal.id);

                return(RedirectToAction("Index"));
            }


            return(View("Form", model));
        }
        public ActionResult Edit(DaftarHargaKonsolidasi model)
        {
            //validasi kondisi
            int idx = 0;

            foreach (DaftarHargaKondisi item in model.listKondisi.Where(d => d.IsDelete == false))
            {
                if (item.kondisi != "Biaya Multidrop" && item.IsDefault == true && item.IsInclude == true && item.IsBill == false && item.value == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].value", "Nilai harus diisi.");
                }
                if (item.kondisi == "Biaya Multidrop" && item.IsKota == true && item.ValKota == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].ValKota", "Nilai harus diisi.");
                }
                if (item.kondisi == "Biaya Multidrop" && item.IsTitik == true && item.ValTitik == null)
                {
                    ModelState.AddModelError("listKondisi[" + idx + "].ValTitik", "Nilai harus diisi.");
                }
                if (item.IsDefault == false)
                {
                    if (item.kondisi == "" || item.kondisi == null)
                    {
                        ModelState.AddModelError("listKondisi[" + idx + "].kondisi", "Nama kondisi harus diisi.");
                    }
                    if (item.IsInclude == true && item.IsBill == false && item.value == null)
                    {
                        ModelState.AddModelError("listKondisi[" + idx + "].value", "Nilai harus diisi.");
                    }
                }

                idx++;
            }

            if (RepoDHKonsolidasi.IsPeriodValid(model.PeriodStart.Value, model.PeriodEnd.Value, model.IdCust.Value, model.Id))
            {
                ModelState.AddModelError("PeriodStart", "Periode awal tidak boleh overlaping.");
                ModelState.AddModelError("PeriodEnd", "Periode akhir tidak boleh overlaping.");
            }

            if (ModelState.IsValid)
            {
                Context.DaftarHargaKonsolidasi dbitem = RepoDHKonsolidasi.FindByPK(model.Id);
                model.setDb(dbitem);
                DaftarHargaKonsolidasiItem[] results = JsonConvert.DeserializeObject <DaftarHargaKonsolidasiItem[]>(model.StrItem);
                List <Context.DaftarHargaKonsolidasiItem> DummyItems = dbitem.DaftarHargaKonsolidasiItem.ToList();
                List <int> ListAnuTeuDiHapus = new List <int>();
                var        query             = "";
                foreach (DaftarHargaKonsolidasiItem item in results)
                {
                    if (item.Id != 0)
                    {
                        query += "UPDATE dbo.\"DaftarHargaKonsolidasiItem\" SET \"NamaDaftarHargaRute\" = " + item.NamaRuteDaftarHarga + ", \"ListIdRute\" = " + item.ListIdRute + ", \"ListNamaRute\" = " +
                                 item.ListNamaRute + ", \"IdJenisKendaraan\" = " + item.IdJenisKendaraan + ", \"MinKg\" = " + item.MinKg + ", \"MaxKg\" = " + item.MaxKg + ", \"Harga\" = " + item.Harga +
                                 ", \"IsAsuransi\" = " + item.IsAsuransi + ", \"Premi\" = " + item.Premi + ", \"NilaiTanggungan\" = " + item.NilaiTanggungan + ", \"Keterangan\" = " + item.Keterangan +
                                 ", \"PihakPenanggung\" = " + item.PihakPenanggung + ", \"TipeNilaiTanggungan\" = " + item.TipeNilaiTanggungan + ", \"IdSatuanHarga\" = " + item.IdSatuanHarga +
                                 " WHERE \"Id\" = " + item.Id + ";";
                        ListAnuTeuDiHapus.Add(item.Id);
                    }
                    else
                    {
                        query += "INSERT INTO dbo.\"DaftarHargaKonsolidasiItem\" (\"IdDaftarHargaKonsolidasi\", \"NamaDaftarHargaRute\", \"ListIdRute\", \"ListNamaRute\", \"IdJenisKendaraan\", " +
                                 "\"MinKg\", \"MaxKg\", \"Harga\", \"IsAsuransi\", \"Premi\", \"NilaiTanggungan\", \"Keterangan\", \"PihakPenanggung\", \"TipeNilaiTanggungan\", \"IdSatuanHarga\") VALUES ( " +
                                 dbitem.Id + ", " + item.NamaRuteDaftarHarga + ", " + item.ListIdRute + ", " + item.ListNamaRute + ", " + item.IdJenisKendaraan + ", " + item.MinKg + ", " + item.MaxKg + ", " +
                                 item.Harga + ", " + item.IsAsuransi + ", " + item.Premi + ", " + item.NilaiTanggungan + ", " + item.Keterangan + ", " + item.PihakPenanggung + ", " + item.TipeNilaiTanggungan +
                                 ", " + item.IdSatuanHarga + ");";
                    }
                }
                foreach (Context.DaftarHargaKonsolidasiItem dbhapus in DummyItems)
                {
                    if (!ListAnuTeuDiHapus.Any(d => d == dbhapus.Id))
                    {
                        query += "DELETE FROM dbo.\"DaftarHargaKonsolidasiItem\" WHERE \"IdDaftarHargaKonsolidasi\" = " + dbitem.Id + ";";
                    }
                }
                RepoDHKonsolidasi.save(dbitem, UserPrincipal.id, query);

                return(RedirectToAction("Index"));
            }
            ViewBag.name = model.NamaCustomer;

            DaftarHargaKonsolidasiItem[] result = JsonConvert.DeserializeObject <DaftarHargaKonsolidasiItem[]>(model.StrItem);
            model.listItem = result.ToList();

            DaftarHargaKonsolidasiAttachment[] resultAtt = JsonConvert.DeserializeObject <DaftarHargaKonsolidasiAttachment[]>(model.StrAttachment);
            model.listAtt = resultAtt.ToList();

            return(View("Form", model));
        }