Skip to content

Instantly share code, notes, and snippets.

@mcyenikoylu
Created November 3, 2020 21:20
Show Gist options
  • Save mcyenikoylu/ca55eb4e4fa8b4b5d51895068e94db4d to your computer and use it in GitHub Desktop.
Save mcyenikoylu/ca55eb4e4fa8b4b5d51895068e94db4d to your computer and use it in GitHub Desktop.
ASP.NET MVC API Azure SQL Database
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MobilAPIs.Controllers
{
[MobilAppTokenKontrol(OgrenciToken = true, PersonelToken = false)]
public class OgrController : ApiController
{
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public List<DersProgramDTO> DersProgrami([FromBody] OgrenciBilgiParametreleriDTO m)
{
var db = new EduContext.DatabaseContext();
var dersliklerim = (from x in db.OgrenciKayitUrun
join d in db.Derslik on x.DerslikID equals d.ID
where x.OgrenciKayit.OgrenciID == m.OgrenciID && x.OgrenciKayit.SezonID == m.SezonID
select new
{
d.OkulID,
DerslikAd = d.Ad,
SinifAd = d.Sinif.Ad,
x.DerslikID
}).ToList();
if (dersliklerim.Count() == 0)
return new List<DersProgramDTO>();
var aktifOkulID = dersliklerim.Select(x => x.OkulID).DefaultIfEmpty(0).FirstOrDefault();
var derslikIDs = dersliklerim.Select(x => x.DerslikID).ToList();
var dersProgramlarim = (from dd in db.DersProgramDetay
join dp in db.DersProgram on dd.DersProgramID equals dp.ID
where derslikIDs.Contains(dd.DerslikID) && dp.isAktif && !dp.isSilindi
select dd.DersProgramID).Distinct().ToList();
var dayOfWeek = (int)DateTime.Now.DayOfWeek;
if (dayOfWeek == 0) { dayOfWeek = 7; }
var gunList = new List<IDveAdDTO>()
{
new IDveAdDTO(){ID=1, Ad="Pazartesi"},
new IDveAdDTO(){ID=2, Ad="Salı"},
new IDveAdDTO(){ID=3, Ad="Çarşamba"},
new IDveAdDTO(){ID=4, Ad="Perşembe"},
new IDveAdDTO(){ID=5, Ad="Cuma"},
new IDveAdDTO(){ID=6, Ad="Cumartesi"},
new IDveAdDTO(){ID=7, Ad="Pazar"},
};
var dpList = new List<DersProgramDTO>();
foreach (var derp in dersProgramlarim)
{
var dp = new DersProgramDTO();
dp.Gunler = gunList;
dp.ProgramAdi = db.DersProgram.Where(x => x.ID == derp).Select(x => x.Ad).DefaultIfEmpty("").FirstOrDefault();
var programAyarlari = db.DersProgramAyar.Where(x => x.DersProgramID == derp).ToList();
dp.DersSayisi = programAyarlari.Where(x => x.Anahtar == DersProgramAyar.AyarAnahtarlar.DersSayisi).Select(x => x.Deger.ToInt32()).DefaultIfEmpty(0).Max();
dp.DersSuresi = programAyarlari.Where(x => x.Anahtar == DersProgramAyar.AyarAnahtarlar.DersSuresiDk).Select(x => x.Deger).DefaultIfEmpty("").FirstOrDefault().ToSadeceNumaralar().ToInt32();
dp.TeneffusSr = programAyarlari.Where(x => x.Anahtar == DersProgramAyar.AyarAnahtarlar.TeneffusSuresiDk).Select(x => x.Deger).DefaultIfEmpty("").FirstOrDefault().ToSadeceNumaralar().ToInt32();
dp.BaslamaSaatiStr = programAyarlari.Where(x => x.Anahtar == DersProgramAyar.AyarAnahtarlar.DersBaslamaSaati).Select(x => x.Deger).DefaultIfEmpty(":").FirstOrDefault();
if (dp.BaslamaSaatiStr.Length < 5) { dp.BaslamaSaatiStr = "00:00"; }
dp.BaslamaSaati = DateTime.ParseExact(dp.BaslamaSaatiStr, "HH:mm", System.Globalization.CultureInfo.CurrentCulture);
dp.Dersler = (from dd in db.DersProgramDetay
join dpr in db.DersProgram on dd.DersProgramID equals dpr.ID
join br in db.Brans on dd.BransID equals br.ID
join dr in db.Derslik on dd.DerslikID equals dr.ID
join pr in db.Personel on dd.PersonelID equals pr.ID
where dpr.OkulID == aktifOkulID
&& dpr.SezonID == m.SezonID
&& dpr.isAktif
&& !dpr.isSilindi
&& dd.DersProgramID == derp
&& derslikIDs.Contains(dr.ID)
select new EduDTO.GunuDersiDTO()
{
Gun = dd.Gun,
DersNo = dd.DersNo,
BransAd = br.Ad,
DerslikAd = dr.Ad,
OgretmenAd = pr.AdSoyad
}).ToList();
dpList.Add(dp);
}
return dpList;
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <returns>
/// </returns>
public List<OgrenciDegerlendirmeDTO> Degerlendirmeler([FromBody] OgrenciBilgiParametreleriDTO m)
{
var db = new DatabaseContext();
var notlar = (from dn in db.OgrenciDegerlendirmeNotu
join br in db.Brans on dn.BransID equals br.ID into br1
from br in br1.DefaultIfEmpty()
join pe in db.Personel on dn.OgretmenID equals pe.ID into pe1
from pe in pe1.DefaultIfEmpty()
where dn.OgrenciID == m.OgrenciID && dn.SezonID == m.SezonID && dn.isVeliGorebilir
select new OgrenciDegerlendirmeDTO()
{
ID = dn.ID,
TarihGunDate = dn.Tarih,
Baslik = dn.Baslik,
BransAd = br == null ? "" : br.Ad,
DegerlendirmeNotTipID = dn.DegerlendirmeNotTipID,
Ogretmen = pe == null ? "" : pe.AdSoyad
}).OrderBy(x => x.TarihGunDate).ToList();
notlar.ForEach(x => x.TarihGunStr = x.TarihGunDate.ToString("dd.MMM.yyyy ddd"));
return notlar;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public JsonDTO DegerlendirmeNotuGoster([FromBody] OgrenciDegerlendirmeNotuDetayDTO m)
{
var db = new DatabaseContext();
var notu = (from x in db.OgrenciDegerlendirmeNotu
where x.SezonID == m.SezonID && x.OgrenciID == m.OgrenciID && x.ID == m.ID
select x.Aciklama).DefaultIfEmpty("").FirstOrDefault();
return new JsonDTO(true, notu, 0);
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <returns>
/// YoklamaTipID = 1:Ders, 2:Etüt
/// </returns>
public List<OgrenciYoklamaDTO> Yoklama([FromBody] OgrenciBilgiParametreleriDTO m)
{
var db = new DatabaseContext();
var yoklar = (from yo in db.YoklamaOgrenci
join br in db.Brans on yo.YoklamaDerslik.BransID equals br.ID into br1
from br in br1.DefaultIfEmpty()
join pe in db.Personel on yo.YoklamaDerslik.PersonelID equals pe.ID into pe1
from pe in pe1.DefaultIfEmpty()
where yo.OgrenciID == m.OgrenciID && yo.YoklamaDerslik.Derslik.SezonID == m.SezonID
select new OgrenciYoklamaDTO
{
TarihGunDate = yo.YoklamaDerslik.TarihGun,
DerslikAd = yo.YoklamaDerslik.Derslik.Ad,
DersNo = yo.YoklamaDerslik.DersNo,
BransAd = br == null ? "" : br.Ad,
YoklamaTipID = yo.YoklamaDerslik.YoklamaTipID,
Ogretmen = pe == null ? "" : pe.AdSoyad,
YoklamaDurumID = yo.YoklamaDurumID
}).ToList()
.OrderBy(x => x.TarihGunDate)
.ThenBy(x => x.DersNo)
.ToList();
yoklar.ForEach(x => x.TarihGunStr = x.TarihGunDate.ToString("dd.MMM.yyyy ddd"));
return yoklar;
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <returns>
/// </returns>
public List<OgrenciRozetDTO> Rozetler([FromBody] OgrenciBilgiParametreleriDTO m)
{
var db = new DatabaseContext();
var liste = (from r in db.RozetOgrenci
join z in db.Rozet on r.RozetID equals z.ID
join o in db.Ogrenci on r.OgrenciID equals o.ID
join p in db.Personel on r.OgretmenID equals p.ID
join b in db.Brans on r.BransID equals b.ID into b1
from b in b1.DefaultIfEmpty()
where r.OgrenciID == m.OgrenciID && r.SezonID == m.SezonID
select new OgrenciRozetDTO()
{
TarihGunDate = r.Tarih,
BransAd = b == null ? "" : b.Ad,
Ogretmen = p.AdSoyad,
RozetAd = z.Ad,
ikonUrl = z.ikonUrl,
Puan = z.Puan,
Aciklama = z.Aciklama,
}).ToList()
.OrderBy(x => x.TarihGunDate)
.ToList();
liste.ForEach(x => x.TarihGunStr = x.TarihGunDate.ToString("dd.MMM.yyyy ddd"));
return liste;
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <returns>
/// </returns>
public List<OgrenciTakipDTO> Takipler([FromBody] OgrenciBilgiParametreleriDTO m)
{
var db = new DatabaseContext();
var liste = (from ff in db.TakipData
join f in db.TakipTanim on ff.TakipTanimID equals f.ID
join p in db.Personel on ff.PersonelID equals p.ID
where f.SezonID == m.SezonID && ff.OgrenciID == m.OgrenciID && f.isVeliyeGoster
group new { ff, p, f } by new
{
Ogretmen = p.AdSoyad,
ff.TakipTanimID,
TakipTanimAd = f.Ad,
ff.PersonelID,
ff.Tarih,
} into k
select new OgrenciTakipDTO
{
Ogretmen = k.Key.Ogretmen,
TakipTanimID = k.Key.TakipTanimID,
TakipTanimAd = k.Key.TakipTanimAd,
TarihGunDate = k.Key.Tarih,
OgretmenID = k.Key.PersonelID
}).ToList().OrderBy(x => x.TarihGunDate).ToList();
liste.ForEach(x => {
x.TarihGunStr = x.TarihGunDate.ToString("dd.MMM.yyyy ddd");
x.GunDDMMYYYY = x.TarihGunDate.ToString("ddMMyyyy");
});
return liste;
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
/// <param name="TakipTanimID"></param>
/// <param name="OgretmenID"></param>
/// <param name="gunDDMMYYYY"></param>
/// <returns>
/// </returns>
public JsonDTO TakipFormVerisiModal([FromBody] TakipVerisiTalepDTO m)
{
var tarih = DateTime.ParseExact(m.GunDDMMYYYY, "ddMMyyyy", System.Globalization.CultureInfo.CurrentCulture);
if (m.GunDDMMYYYY == "" || tarih.Year < 2000)
{
tarih = DateTime.Now.Date;
}
var db = new DatabaseContext();
var data = (from td in db.TakipData
join ts in db.TakipSecenek on td.TakipSecenekID equals ts.ID
where td.OgrenciID == m.OgrenciID && td.PersonelID == m.OgretmenID && td.TakipTanimID == m.TakipTanimID && td.Tarih == tarih
orderby ts.Sira ascending
select new
{
td.Deger,
ts.TakipSecenekTip.HtmlTip,
ts.Ad,
}).ToList();
if (data == null || data.Count() == 0)
{
return new JsonDTO(false, "Kullanılabilir form verisi bulunamadı!", 0);
}
var OgretmenAd = db.Personel.Where(x => x.ID == m.OgretmenID).Select(x => x.AdSoyad).DefaultIfEmpty("...").FirstOrDefault();
var TakipTanimAd = db.TakipTanim.Where(x => x.ID == m.TakipTanimID).Select(x => x.Ad).DefaultIfEmpty("...").FirstOrDefault();
return new JsonDTO(true, new
{
TakipTanimAd,
OgretmenAd,
FormAlanlar = data
}, 0);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment