コード例 #1
0
        public void ParamNoBL_GetById_Test()
        {
            //  arrange
            ParamNoModel paramNo = new ParamNoModel
            {
                Prefix = "AA",
                Value  = 2
            };

            _paramNoDal.Stub(x => x.GetById("AA")).Return(paramNo);

            //  act
            var value = _paramNoBL.GetById("AA");

            //  assert
            _paramNoDal.AssertWasCalled(x => x.Update(Arg <ParamNoModel>
                                                      .Matches(y => y.Prefix == "AA" && y.Value == 3)));
        }
コード例 #2
0
        public void Save(JadwalHariModel jadwal)
        {
            //--validasi
            //  dokter
            if (_dokterBL.GetById(jadwal.KodeDokter).Nama.Trim() == "")
            {
                throw new ArgumentException("Invalid DOKTER");
            }

            //  layanan
            if (_layananBL.GetById(jadwal.KodeLayanan).Nama.Trim() == "")
            {
                throw new ArgumentException("Invalid LAYANAN");
            }

            //  hari
            if (jadwal.Hari < 1 || jadwal.Hari > 7)
            {
                throw new ArgumentException("Invalid HARI");
            }

            //  jam mulai
            TimeSpan jamMulai;

            if (!TimeSpan.TryParse(jadwal.JamMulai, out jamMulai))
            {
                throw new ArgumentException("Invalid JAM MULAI");
            }

            //  jam selesai
            TimeSpan jamSelesai;

            if (!TimeSpan.TryParse(jadwal.JamSelesai, out jamSelesai))
            {
                throw new ArgumentException("Invalid JAM SELESAI");
            }

            //  urutan jam mulai-jam selesai
            if (TimeSpan.Compare(jamMulai, jamSelesai) == 1)
            {
                throw new ArgumentException("Invalid JAM MULAI-SELESAI");
            }

            //--validasi detil per jam
            foreach (JadwalHariPerJamModel item in jadwal.JadwalPerJams)
            {
                //  format jam
                TimeSpan jamDetil;
                if (!TimeSpan.TryParse(item.Jam, out jamDetil))
                {
                    throw new ArgumentException("Invalid Format Detil JAM");
                }

                //  jam detil harus berada di range jam di header
                if (TimeSpan.Compare(jamMulai, jamDetil) == 1)
                {
                    throw new ArgumentException("Invalid Range Detil JAM");
                }
                if (TimeSpan.Compare(jamDetil, jamSelesai) == 1)
                {
                    throw new ArgumentException("Invalid Range Detil JAM");
                }

                //  booked tidak boleh melebihi max
                if (item.Booked > item.Max)
                {
                    throw new ArgumentException("Invalid BOOKED QTY");
                }
            }

            //  cek duplikasi dokter-hari-jam (case beda jadwal sama (ini)))
            //      ambil data header
            var result =
                from jadwalJam in jadwal.JadwalPerJams
                group jadwalJam by jadwalJam.Jam into jamGroup
                select new { Jam = jamGroup.Key, Count = jamGroup.Count() };

            if (result.ToList().Exists(x => x.Count > 1))
            {
                throw new ArgumentException("Duplicated JAM PRAKTEK");
            }


            TransactionOptions tranOption = new TransactionOptions
            {
                IsolationLevel = IsolationLevel.ReadCommitted
            };

            using (TransactionScope tran = new TransactionScope(TransactionScopeOption.Required, tranOption))
            {
                //  generate kode jadwal jika kosong
                if (jadwal.Kode.Trim() == "")
                {
                    ParamNoModel paramNo = _paramNoBL.GetById("JD");
                    jadwal.Kode = _paramNoBL.FormatKode(paramNo, 5, "");
                    _jadwalHariDal.Insert(jadwal);
                }
                else
                {
                    _jadwalHariDal.Update(jadwal);
                }
                tran.Complete();
            }
        }