public async Task <IActionResult> Delete(int id)
        {
            try
            {
                await _detailPenggajian.Delete(id);

                return(Ok("Data berhasil didelete"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Esempio n. 2
0
        public async Task UpdateAsync(Penggajian obj)
        {
            //must make sure that the idkatbarang is not null
            var data = await GetById(obj.IdGaji);

            if (data != null)
            {
                try
                {
                    var a        = Convert.ToDateTime(obj.TanggalAwal);
                    var b        = Convert.ToDateTime(obj.TanggalAkhir);
                    var total    = (b - a).TotalDays;
                    var testUser = await _pengguna.getpenggunausername(data.Username);

                    if (testUser.rolename != "Dokter")
                    {
                        throw new Exception("Pengguna ini bukanlah Seorang Dokter");
                    }
                    //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);
                        }
                    }
                    datapegawai.Gaji = obj.TotalGaji;
                    await _detailPegawai.UpdateAsync(datapegawai);

                    data.MasaWaktu    = (data.TanggalAkhir - data.TanggalAwal).ToString();
                    data.TanggalAkhir = obj.TanggalAkhir;
                    data.TanggalAwal  = obj.TanggalAwal;
                    data.TanggalGaji  = obj.TanggalGaji;
                    data.TotalGaji    = obj.TotalGaji;
                    await _context.SaveChangesAsync();

                    var Det_gaji = await _context.DetailPenggajian.Where(r => r.IdGaji == data.IdGaji).ToListAsync();

                    foreach (var deletedetail in Det_gaji)
                    {
                        await _detailPenggajian.Delete(deletedetail.IdDetailGaji);
                    }
                    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);
                    }


                    await _context.SaveChangesAsync();
                }
                catch (Exception ex)
                {
                    throw new Exception($"{ex.Message} {ex.InnerException.Message}");
                }
            }
            else
            {
                throw new Exception("Data tidak ditemukan");
            }
        }