Esempio n. 1
0
        public IResult IzinGiris(Izin izin)
        {
            try
            {
                if (izin.IzinBitisTarihi < izin.IzinBaslamaTarihi)
                {
                    throw new Exception("Başlama Tarihi Bitiş Tarihinden büyük olamaz");
                }

                //personelId li personeli kontrol et
                var personel = personelService.PersonelGetir(izin.PersonelId);
                if (!personel.Success)
                {
                    return(personel);
                }

                //personelin istenen izin gün sayısını hesapla
                var isteneIzinGunSayisi = (izin.IzinBitisTarihi - izin.IzinBaslamaTarihi).Days;

                //personelin istenen izin gün sayısı kadar izni var mı hesapla
                var izinVarmi = personelService.IzinHakkiSorgula(izin.PersonelId, isteneIzinGunSayisi);

                if (!izinVarmi.Success)
                {
                    return(izinVarmi);
                }

                //izni varsa
                //personelin iznini gir
                izinDal.Add(izin);

                //personelin kalan izin gün sayısını update
                personel.Data.KalanİzinGunu -= isteneIzinGunSayisi;
                personelService.PersonelUpdate(personel.Data);

                return(new SuccessResult(SuccessMessages.IzinGirildi));
            }
            catch (Exception ex)
            {
                return(new ErrorResult(ex.Message));
            }
        }