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)); } }