Пример #1
0
        public async Task CreateAsync(Penggajian obj)
        {   //gaji tidak bisa waktu tanggal join / sebelum join
            var a     = Convert.ToDateTime(obj.TanggalAwal);
            var b     = Convert.ToDateTime(obj.TanggalAkhir);
            var total = (b - a).TotalDays.ToString();

            obj.MasaWaktu = total;
            // cek nama "" itu dokter atau bukan
            var testUser = await _pengguna.getpenggunausername(obj.Username);

            if (testUser.rolename != "Dokter")
            {
                throw new Exception("Pengguna ini bukanlah Seorang Dokter");
            }
            //detailpegawai + tenant id
            var datapegawai = _context.DetailPegawai.Where(x => x.Username == obj.Username).SingleOrDefault();

            if (datapegawai == null)
            {
                throw new Exception("Pengguna ini bukanlah Seorang Dokter");
            }
            obj.DetailPegawaiID = datapegawai.DetailPegawaiID;
            //search transaksi per tenant dulu + dokter
            var dataTransaksi = _context.Transaksi.Include(e => e.Tindakan).Where(t => t.TenantID == obj.TenantID && t.Username == obj.Username).ToList();

            if (dataTransaksi == null)
            {
                throw new Exception("Pengguna ini belum memiliki transaksi apapuun !");
            }
            //sort sesuai dengan Tanggal yang di pilih
            var Datatgl_transaksi = dataTransaksi.Where(x => x.Tanggal >= obj.TanggalAwal && x.Tanggal <= obj.TanggalAkhir).ToList();
            // Pada saat
            DetailPenggajian detailgaji = new DetailPenggajian();

            foreach (var item in Datatgl_transaksi)
            {
                foreach (var biayaTrans in item.Tindakan)
                {
                    obj.TotalGaji = obj.TotalGaji + (biayaTrans.Biaya * biayaTrans.Persenan / 100);
                }
            }
            _context.Add(obj);
            await _context.SaveChangesAsync();

            detailgaji.IdGaji = obj.IdGaji;
            foreach (var test in Datatgl_transaksi)
            {
                detailgaji.IdTransaksi = test.IdTransaksi;
                _context.DetailPenggajian.Add(detailgaji);
                detailgaji.IdDetailGaji = 0;
                await _detailPenggajian.CreateAsync(detailgaji);

                //var dt_pegawai1 = await _detailPegawai.getusername(obj.Username);
                //var dt_pegawai = await _context.DetailPegawai.Where(r => r.Username == obj.Username).SingleOrDefaultAsync();
                datapegawai.Gaji = obj.TotalGaji;
                await _detailPegawai.UpdateAsync(datapegawai);

                //update by id ?
            }
        }
        public async Task <IActionResult> Post([FromBody] DetailPenggajian detailPenggajian)
        {
            try
            {
                await _detailPenggajian.CreateAsync(detailPenggajian);

                return(Ok("Tambah Data Berhasil"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }