update
parent
540f387d48
commit
d0e1e97254
|
|
@ -0,0 +1,273 @@
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
using kehati.Models.View;
|
||||
|
||||
namespace kehati.Controllers
|
||||
{
|
||||
public class FaunaController : Controller
|
||||
{
|
||||
public IActionResult Index()
|
||||
{
|
||||
var model = new HomeViewModel
|
||||
{
|
||||
|
||||
FeaturedLocations = new List<LokasiModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "tebet-eco-park",
|
||||
Name = "Tebet Eco Park"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "hutan-kota-srengseng",
|
||||
Name = "Hutan Kota Srengseng",
|
||||
Image = "loc-srengseng.jpg"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "mangrove-angke",
|
||||
Name = "Hutan Mangrove Angke"
|
||||
}
|
||||
},
|
||||
|
||||
FeaturedSpesies = new List<SpesiesModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "pohon-trembesi",
|
||||
Type = "flora",
|
||||
CommonName = "Pohon Trembesi",
|
||||
ScientificName = "Samanea saman",
|
||||
Description =
|
||||
"Pohon peneduh raksasa dengan tajuk lebar menyerupai payung. Sangat efektif menyerap karbon dioksida sehingga banyak ditanam di ruang publik Jakarta.",
|
||||
Habitat = "Tumbuh baik di dataran rendah tropis, tanah subur, sinar matahari penuh.",
|
||||
ConservationStatus = "Aman",
|
||||
Image = "sp-trembesi.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{
|
||||
"tebet-eco-park",
|
||||
"hutan-kota-gbk",
|
||||
"taman-menteng"
|
||||
}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "pohon-beringin",
|
||||
Type= "flora",
|
||||
CommonName= "Pohon Beringin",
|
||||
ScientificName= "Ficus benjamina",
|
||||
Description=
|
||||
"Pohon rindang dengan akar udara khas yang menjuntai. Simbol keteduhan dan sering dijumpai di taman kota serta ruang publik Jakarta.",
|
||||
Habitat= "Iklim tropis, tanah lembab, tahan terhadap polusi udara perkotaan.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-beringin.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"hutan-kota-srengseng", "taman-menteng", "hutan-kota-gbk"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "mangrove-rhizophora",
|
||||
Type= "flora",
|
||||
CommonName= "Bakau Merah",
|
||||
ScientificName= "Rhizophora mucronata",
|
||||
Description=
|
||||
"Tumbuhan bakau dengan akar tunjang khas. Berfungsi sebagai benteng alami pesisir Jakarta terhadap abrasi dan intrusi air laut.",
|
||||
Habitat= "Kawasan pesisir berlumpur, muara sungai, air payau.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-mangrove.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "bunga-kamboja",
|
||||
Type= "flora",
|
||||
CommonName= "Kamboja Putih",
|
||||
ScientificName= "Plumeria alba",
|
||||
Description=
|
||||
"Pohon hias berbunga harum dengan kelopak putih dan kuning di tengah. Populer di pekarangan dan taman kota.",
|
||||
Habitat= "Daerah tropis kering, tanah berdrainase baik.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kamboja.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "taman-menteng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "anggrek-bulan",
|
||||
Type= "flora",
|
||||
CommonName= "Anggrek Bulan",
|
||||
ScientificName= "Phalaenopsis amabilis",
|
||||
Description=
|
||||
"Bunga nasional Indonesia (Puspa Pesona). Berkelopak lebar putih murni, tumbuh menempel pada batang pohon.",
|
||||
Habitat= "Epifit pada pohon di hutan tropis lembab.",
|
||||
ConservationStatus= "Rentan",
|
||||
Image= "sp-anggrek.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"hutan-kota-srengseng", "tebet-eco-park"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "bambu-kuning",
|
||||
Type= "flora",
|
||||
CommonName= "Bambu Kuning",
|
||||
ScientificName= "Bambusa vulgaris",
|
||||
Description=
|
||||
"Rumpun bambu berbatang kuning cerah yang tumbuh cepat. Berperan penting menyerap air tanah dan mencegah erosi.",
|
||||
Habitat= "Tanah lembab di tepi sungai, taman, dan hutan kota.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-bambu.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "burung-kutilang",
|
||||
Type= "fauna",
|
||||
CommonName= "Burung Kutilang",
|
||||
ScientificName= "Pycnonotus aurigaster",
|
||||
Description=
|
||||
"Burung pengicau kecil dengan tunggir kuning cerah. Salah satu burung liar paling umum di taman-taman Jakarta.",
|
||||
Habitat= "Taman kota, pekarangan, hutan sekunder.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kutilang.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "taman-menteng", "hutan-kota-gbk"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "burung-madu-sriganti",
|
||||
Type= "fauna",
|
||||
CommonName= "Burung Madu Sriganti",
|
||||
ScientificName= "Cinnyris jugularis",
|
||||
Description=
|
||||
"Burung kecil berwarna cerah, jantan berdada hitam berkilau. Penghisap nektar bunga di taman dan hutan kota.",
|
||||
Habitat= "Taman berbunga, semak berbunga, pinggir hutan.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-madu-sriganti.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "kupu-kupu-raja",
|
||||
Type= "fauna",
|
||||
CommonName= "Kupu-kupu Raja",
|
||||
ScientificName= "Papilio memnon",
|
||||
Description=
|
||||
"Kupu-kupu besar berwarna hitam kebiruan dengan sayap lebar. Penyerbuk penting bagi berbagai tanaman berbunga.",
|
||||
Habitat= "Taman berbunga, hutan sekunder, pinggir sungai.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kupu-kupu.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "biawak-air",
|
||||
Type= "fauna",
|
||||
CommonName= "Biawak Air",
|
||||
ScientificName= "Varanus salvator",
|
||||
Description=
|
||||
"Reptil besar semi-akuatik dengan lidah bercabang. Predator alami yang membantu mengendalikan populasi tikus di ekosistem kota.",
|
||||
Habitat= "Rawa, sungai, hutan mangrove.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-biawak.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "monyet-ekor-panjang",
|
||||
Type= "fauna",
|
||||
CommonName= "Monyet Ekor Panjang",
|
||||
ScientificName= "Macaca fascicularis",
|
||||
Description=
|
||||
"Primata berbulu abu-abu kecoklatan dengan ekor panjang. Hidup berkelompok di kawasan hutan yang tersisa.",
|
||||
Habitat= "Hutan mangrove, hutan sekunder, tepi sungai.",
|
||||
ConservationStatus= "Rentan",
|
||||
Image= "sp-monyet.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "elang-bondol",
|
||||
Type= "fauna",
|
||||
CommonName= "Elang Bondol",
|
||||
ScientificName= "Haliastur indus",
|
||||
Description=
|
||||
"Elang berkepala putih dengan tubuh coklat kemerahan. Maskot Provinsi DKI Jakarta dan simbol kekayaan hayati pesisir.",
|
||||
Habitat= "Pesisir, mangrove, muara sungai.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-elang-bondol.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
}
|
||||
}
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
public IActionResult Detail(string slug)
|
||||
{
|
||||
ViewBag.Slug = slug;
|
||||
|
||||
var sp = new SpesiesModel
|
||||
{
|
||||
Slug= "elang-bondol",
|
||||
Type= "fauna",
|
||||
CommonName= "Elang Bondol",
|
||||
ScientificName= "Haliastur indus",
|
||||
Description=
|
||||
"Elang berkepala putih dengan tubuh coklat kemerahan. Maskot Provinsi DKI Jakarta dan simbol kekayaan hayati pesisir.",
|
||||
Habitat= "Pesisir, mangrove, muara sungai.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-elang-bondol.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
};
|
||||
|
||||
var model = new HomeViewModel
|
||||
{
|
||||
Spesies = sp,
|
||||
FeaturedLocations = new List<LokasiModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "tebet-eco-park",
|
||||
Name = "Tebet Eco Park",
|
||||
Region = "Jakarta Selatan",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20,
|
||||
Image = "loc-tebet.jpg"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "hutan-kota-srengseng",
|
||||
Name = "Hutan Kota Srengseng",
|
||||
Image = "loc-srengseng.jpg",
|
||||
Region = "Jakarta Barat",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Slug = "mangrove-angke",
|
||||
Name = "Hutan Mangrove Angke",
|
||||
Region = "Jakarta Barat",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20,
|
||||
Image = "loc-mangrove-pik.jpg"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
using kehati.Models.View;
|
||||
|
||||
namespace kehati.Controllers
|
||||
{
|
||||
public class FloraController : Controller
|
||||
{
|
||||
public IActionResult Index()
|
||||
{
|
||||
var model = new HomeViewModel
|
||||
{
|
||||
|
||||
FeaturedLocations = new List<LokasiModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "tebet-eco-park",
|
||||
Name = "Tebet Eco Park"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "hutan-kota-srengseng",
|
||||
Name = "Hutan Kota Srengseng",
|
||||
Image = "loc-srengseng.jpg"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "mangrove-angke",
|
||||
Name = "Hutan Mangrove Angke"
|
||||
}
|
||||
},
|
||||
|
||||
FeaturedSpesies = new List<SpesiesModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "pohon-trembesi",
|
||||
Type = "flora",
|
||||
CommonName = "Pohon Trembesi",
|
||||
ScientificName = "Samanea saman",
|
||||
Description =
|
||||
"Pohon peneduh raksasa dengan tajuk lebar menyerupai payung. Sangat efektif menyerap karbon dioksida sehingga banyak ditanam di ruang publik Jakarta.",
|
||||
Habitat = "Tumbuh baik di dataran rendah tropis, tanah subur, sinar matahari penuh.",
|
||||
ConservationStatus = "Aman",
|
||||
Image = "sp-trembesi.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{
|
||||
"tebet-eco-park",
|
||||
"hutan-kota-gbk",
|
||||
"taman-menteng"
|
||||
}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "pohon-beringin",
|
||||
Type= "flora",
|
||||
CommonName= "Pohon Beringin",
|
||||
ScientificName= "Ficus benjamina",
|
||||
Description=
|
||||
"Pohon rindang dengan akar udara khas yang menjuntai. Simbol keteduhan dan sering dijumpai di taman kota serta ruang publik Jakarta.",
|
||||
Habitat= "Iklim tropis, tanah lembab, tahan terhadap polusi udara perkotaan.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-beringin.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"hutan-kota-srengseng", "taman-menteng", "hutan-kota-gbk"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "mangrove-rhizophora",
|
||||
Type= "flora",
|
||||
CommonName= "Bakau Merah",
|
||||
ScientificName= "Rhizophora mucronata",
|
||||
Description=
|
||||
"Tumbuhan bakau dengan akar tunjang khas. Berfungsi sebagai benteng alami pesisir Jakarta terhadap abrasi dan intrusi air laut.",
|
||||
Habitat= "Kawasan pesisir berlumpur, muara sungai, air payau.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-mangrove.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "bunga-kamboja",
|
||||
Type= "flora",
|
||||
CommonName= "Kamboja Putih",
|
||||
ScientificName= "Plumeria alba",
|
||||
Description=
|
||||
"Pohon hias berbunga harum dengan kelopak putih dan kuning di tengah. Populer di pekarangan dan taman kota.",
|
||||
Habitat= "Daerah tropis kering, tanah berdrainase baik.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kamboja.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "taman-menteng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "anggrek-bulan",
|
||||
Type= "flora",
|
||||
CommonName= "Anggrek Bulan",
|
||||
ScientificName= "Phalaenopsis amabilis",
|
||||
Description=
|
||||
"Bunga nasional Indonesia (Puspa Pesona). Berkelopak lebar putih murni, tumbuh menempel pada batang pohon.",
|
||||
Habitat= "Epifit pada pohon di hutan tropis lembab.",
|
||||
ConservationStatus= "Rentan",
|
||||
Image= "sp-anggrek.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"hutan-kota-srengseng", "tebet-eco-park"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "bambu-kuning",
|
||||
Type= "flora",
|
||||
CommonName= "Bambu Kuning",
|
||||
ScientificName= "Bambusa vulgaris",
|
||||
Description=
|
||||
"Rumpun bambu berbatang kuning cerah yang tumbuh cepat. Berperan penting menyerap air tanah dan mencegah erosi.",
|
||||
Habitat= "Tanah lembab di tepi sungai, taman, dan hutan kota.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-bambu.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "burung-kutilang",
|
||||
Type= "fauna",
|
||||
CommonName= "Burung Kutilang",
|
||||
ScientificName= "Pycnonotus aurigaster",
|
||||
Description=
|
||||
"Burung pengicau kecil dengan tunggir kuning cerah. Salah satu burung liar paling umum di taman-taman Jakarta.",
|
||||
Habitat= "Taman kota, pekarangan, hutan sekunder.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kutilang.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "taman-menteng", "hutan-kota-gbk"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "burung-madu-sriganti",
|
||||
Type= "fauna",
|
||||
CommonName= "Burung Madu Sriganti",
|
||||
ScientificName= "Cinnyris jugularis",
|
||||
Description=
|
||||
"Burung kecil berwarna cerah, jantan berdada hitam berkilau. Penghisap nektar bunga di taman dan hutan kota.",
|
||||
Habitat= "Taman berbunga, semak berbunga, pinggir hutan.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-madu-sriganti.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "kupu-kupu-raja",
|
||||
Type= "fauna",
|
||||
CommonName= "Kupu-kupu Raja",
|
||||
ScientificName= "Papilio memnon",
|
||||
Description=
|
||||
"Kupu-kupu besar berwarna hitam kebiruan dengan sayap lebar. Penyerbuk penting bagi berbagai tanaman berbunga.",
|
||||
Habitat= "Taman berbunga, hutan sekunder, pinggir sungai.",
|
||||
ConservationStatus= "Aman",
|
||||
Image= "sp-kupu-kupu.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"tebet-eco-park", "hutan-kota-srengseng"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "biawak-air",
|
||||
Type= "fauna",
|
||||
CommonName= "Biawak Air",
|
||||
ScientificName= "Varanus salvator",
|
||||
Description=
|
||||
"Reptil besar semi-akuatik dengan lidah bercabang. Predator alami yang membantu mengendalikan populasi tikus di ekosistem kota.",
|
||||
Habitat= "Rawa, sungai, hutan mangrove.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-biawak.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "monyet-ekor-panjang",
|
||||
Type= "fauna",
|
||||
CommonName= "Monyet Ekor Panjang",
|
||||
ScientificName= "Macaca fascicularis",
|
||||
Description=
|
||||
"Primata berbulu abu-abu kecoklatan dengan ekor panjang. Hidup berkelompok di kawasan hutan yang tersisa.",
|
||||
Habitat= "Hutan mangrove, hutan sekunder, tepi sungai.",
|
||||
ConservationStatus= "Rentan",
|
||||
Image= "sp-monyet.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug= "elang-bondol",
|
||||
Type= "fauna",
|
||||
CommonName= "Elang Bondol",
|
||||
ScientificName= "Haliastur indus",
|
||||
Description=
|
||||
"Elang berkepala putih dengan tubuh coklat kemerahan. Maskot Provinsi DKI Jakarta dan simbol kekayaan hayati pesisir.",
|
||||
Habitat= "Pesisir, mangrove, muara sungai.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-elang-bondol.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
}
|
||||
}
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
public IActionResult Detail(string slug)
|
||||
{
|
||||
ViewBag.Slug = slug;
|
||||
|
||||
var sp = new SpesiesModel
|
||||
{
|
||||
Slug= "elang-bondol",
|
||||
Type= "fauna",
|
||||
CommonName= "Elang Bondol",
|
||||
ScientificName= "Haliastur indus",
|
||||
Description=
|
||||
"Elang berkepala putih dengan tubuh coklat kemerahan. Maskot Provinsi DKI Jakarta dan simbol kekayaan hayati pesisir.",
|
||||
Habitat= "Pesisir, mangrove, muara sungai.",
|
||||
ConservationStatus= "Dilindungi",
|
||||
Image= "sp-elang-bondol.jpg",
|
||||
LocationSlugs = new List<string>
|
||||
{"muara-angke", "mangrove-pik"}
|
||||
};
|
||||
|
||||
var model = new HomeViewModel
|
||||
{
|
||||
Spesies = sp,
|
||||
FeaturedLocations = new List<LokasiModel>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Slug = "tebet-eco-park",
|
||||
Name = "Tebet Eco Park",
|
||||
Region = "Jakarta Selatan",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20,
|
||||
Image = "loc-tebet.jpg"
|
||||
},
|
||||
new()
|
||||
{
|
||||
Slug = "hutan-kota-srengseng",
|
||||
Name = "Hutan Kota Srengseng",
|
||||
Image = "loc-srengseng.jpg",
|
||||
Region = "Jakarta Barat",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Slug = "mangrove-angke",
|
||||
Name = "Hutan Mangrove Angke",
|
||||
Region = "Jakarta Barat",
|
||||
Area = "15.3 Ha",
|
||||
FloraCount = 45,
|
||||
FaunaCount = 20,
|
||||
Image = "loc-mangrove-pik.jpg"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +1,40 @@
|
|||
using System.Diagnostics;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using kehati.Models.View;
|
||||
using kehati.Database;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace kehati.Controllers;
|
||||
|
||||
public class HomeController : Controller
|
||||
{
|
||||
private readonly ILogger<HomeController> _logger;
|
||||
private readonly ApplicationDbContext db;
|
||||
|
||||
public HomeController(ILogger<HomeController> logger)
|
||||
public HomeController(ILogger<HomeController> logger,ApplicationDbContext context)
|
||||
{
|
||||
_logger = logger;
|
||||
db = context;
|
||||
}
|
||||
|
||||
public IActionResult Index()
|
||||
public async Task<IActionResult> Index()
|
||||
{
|
||||
//memanggil data lokasi dari master DB Lokasi
|
||||
ViewBag.lokasiHome = await db.Lokasi
|
||||
.OrderByDescending(l => l.MsLokasiId)
|
||||
.Take(3)
|
||||
.ToListAsync();
|
||||
ViewBag.tumbuhanHome = await db.Tumbuhan
|
||||
.OrderByDescending(l => l.MsTumbuhanId)
|
||||
.Take(4)
|
||||
.ToListAsync();
|
||||
|
||||
ViewBag.faunaHome = await db.Fauna
|
||||
.OrderByDescending(l => l.MsFaunaId)
|
||||
.Take(4)
|
||||
.ToListAsync();
|
||||
|
||||
var model = new HomeViewModel
|
||||
{
|
||||
Statistik = new StatistikHomeModel
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using kehati.Models.View;
|
||||
|
||||
namespace kehati.Data
|
||||
{
|
||||
public class ApplicationDbContext : DbContext
|
||||
{
|
||||
|
||||
public ApplicationDbContext(
|
||||
DbContextOptions<ApplicationDbContext> options
|
||||
) : base(options)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public DbSet<LokasiModel> Lokasi { get; set; }
|
||||
|
||||
public DbSet<SpesiesModel> Spesies { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using kehati.Models.Entity.Master;
|
||||
using kehati.Models.Entity;
|
||||
|
||||
namespace kehati.Database
|
||||
{
|
||||
public class ApplicationDbContext : DbContext
|
||||
{
|
||||
|
||||
public ApplicationDbContext(
|
||||
DbContextOptions<ApplicationDbContext> options
|
||||
) : base(options)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DbSet<User> User { get; set; }
|
||||
public DbSet<Lokasi> Lokasi { get; set; }
|
||||
public DbSet<Famili> Famili { get; set; }
|
||||
public DbSet<Group> Group { get; set; }
|
||||
public DbSet<Habitat> Habitat { get; set; }
|
||||
public DbSet<LokasiTumbuhan> LokasiTumbuhan { get; set; }
|
||||
public DbSet<Menu> Menu { get; set; }
|
||||
public DbSet<Tumbuhan> Tumbuhan { get; set; }
|
||||
public DbSet<Fauna> Fauna { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,290 @@
|
|||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
using kehati.Database;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace kehati.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20260717065158_InitialCreate")]
|
||||
partial class InitialCreate
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "9.0.1")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Famili", b =>
|
||||
{
|
||||
b.Property<int>("MsFamiliId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsFamiliId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsFamiliId");
|
||||
|
||||
b.ToTable("ms_famili");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Group", b =>
|
||||
{
|
||||
b.Property<int>("MsGroupId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsGroupId"));
|
||||
|
||||
b.Property<string>("Alias")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("CreatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("UpdatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("MsGroupId");
|
||||
|
||||
b.ToTable("ms_group");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Habitat", b =>
|
||||
{
|
||||
b.Property<int>("MsHabitusId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsHabitusId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsHabitusId");
|
||||
|
||||
b.ToTable("ms_habitus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Lokasi", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiId"));
|
||||
|
||||
b.Property<string>("Area")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("area");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<int?>("Kode")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("kode");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Region")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("region");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.HasKey("MsLokasiId");
|
||||
|
||||
b.ToTable("ms_lokasi");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.LokasiTumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiTumbuhanId"));
|
||||
|
||||
b.Property<int>("MsLokasiId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_lokasi_id");
|
||||
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_tumbuhan_id");
|
||||
|
||||
b.HasKey("MsLokasiTumbuhanId");
|
||||
|
||||
b.ToTable("ms_lokasi_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Menu", b =>
|
||||
{
|
||||
b.Property<int>("MsMenuId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsMenuId"));
|
||||
|
||||
b.Property<string>("MenuIcon")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_icon");
|
||||
|
||||
b.Property<string>("MenuType")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_type");
|
||||
|
||||
b.Property<string>("Module")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Ordering")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("ParentId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("parent_id");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Url")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsMenuId");
|
||||
|
||||
b.ToTable("ms_menu");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Tumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsTumbuhanId"));
|
||||
|
||||
b.Property<string>("Cites")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("cites");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<string>("Iucn")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("iucn");
|
||||
|
||||
b.Property<int>("MsFamiliId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_famili_id");
|
||||
|
||||
b.Property<int>("MsHabitatId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_habitus_id");
|
||||
|
||||
b.Property<string>("NamaIlmiah")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name_ilmiah");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("StatusPerlindungan")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status_perlindungan");
|
||||
|
||||
b.Property<bool>("TanamanKhasJakarta")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("tanaman_khas_jakarta");
|
||||
|
||||
b.HasKey("MsTumbuhanId");
|
||||
|
||||
b.ToTable("ms_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.User", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("MsGroupId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_group_id");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Username")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("users");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace kehati.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class InitialCreate : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_famili",
|
||||
columns: table => new
|
||||
{
|
||||
MsFamiliId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
Name = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_famili", x => x.MsFamiliId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_group",
|
||||
columns: table => new
|
||||
{
|
||||
MsGroupId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
Name = table.Column<string>(type: "text", nullable: false),
|
||||
Alias = table.Column<string>(type: "text", nullable: false),
|
||||
Status = table.Column<string>(type: "text", nullable: false),
|
||||
CreatedBy = table.Column<int>(type: "integer", nullable: false),
|
||||
UpdatedBy = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_group", x => x.MsGroupId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_habitus",
|
||||
columns: table => new
|
||||
{
|
||||
MsHabitusId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
Name = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_habitus", x => x.MsHabitusId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_lokasi",
|
||||
columns: table => new
|
||||
{
|
||||
MsLokasiId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
name = table.Column<string>(type: "text", nullable: false),
|
||||
kode = table.Column<int>(type: "integer", nullable: true),
|
||||
status = table.Column<string>(type: "text", nullable: true),
|
||||
image = table.Column<string>(type: "text", nullable: true),
|
||||
slug = table.Column<string>(type: "text", nullable: true),
|
||||
region = table.Column<string>(type: "text", nullable: true),
|
||||
area = table.Column<string>(type: "text", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_lokasi", x => x.MsLokasiId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_lokasi_tumbuhan",
|
||||
columns: table => new
|
||||
{
|
||||
MsLokasiTumbuhanId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
ms_tumbuhan_id = table.Column<int>(type: "integer", nullable: false),
|
||||
ms_lokasi_id = table.Column<int>(type: "integer", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_lokasi_tumbuhan", x => x.MsLokasiTumbuhanId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_menu",
|
||||
columns: table => new
|
||||
{
|
||||
MsMenuId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
parent_id = table.Column<int>(type: "integer", nullable: false),
|
||||
Title = table.Column<string>(type: "text", nullable: false),
|
||||
Module = table.Column<string>(type: "text", nullable: false),
|
||||
Url = table.Column<string>(type: "text", nullable: false),
|
||||
menu_type = table.Column<string>(type: "text", nullable: false),
|
||||
menu_icon = table.Column<string>(type: "text", nullable: false),
|
||||
Ordering = table.Column<string>(type: "text", nullable: false),
|
||||
Status = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_menu", x => x.MsMenuId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_tumbuhan",
|
||||
columns: table => new
|
||||
{
|
||||
MsTumbuhanId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
ms_famili_id = table.Column<int>(type: "integer", nullable: false),
|
||||
ms_habitus_id = table.Column<int>(type: "integer", nullable: false),
|
||||
name = table.Column<string>(type: "text", nullable: true),
|
||||
name_ilmiah = table.Column<string>(type: "text", nullable: true),
|
||||
tanaman_khas_jakarta = table.Column<bool>(type: "boolean", nullable: false),
|
||||
status_perlindungan = table.Column<string>(type: "text", nullable: true),
|
||||
iucn = table.Column<string>(type: "text", nullable: true),
|
||||
cites = table.Column<string>(type: "text", nullable: true),
|
||||
slug = table.Column<string>(type: "text", nullable: true),
|
||||
image = table.Column<string>(type: "text", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ms_tumbuhan", x => x.MsTumbuhanId);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "users",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
ms_group_id = table.Column<int>(type: "integer", nullable: false),
|
||||
Name = table.Column<string>(type: "text", nullable: false),
|
||||
Username = table.Column<string>(type: "text", nullable: false),
|
||||
Email = table.Column<string>(type: "text", nullable: false),
|
||||
Password = table.Column<string>(type: "text", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_users", x => x.Id);
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_famili");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_group");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_habitus");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_lokasi");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_lokasi_tumbuhan");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_menu");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_tumbuhan");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "users");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,290 @@
|
|||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
using kehati.Database;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace kehati.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20260717070105_AddFaunaTable")]
|
||||
partial class AddFaunaTable
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "9.0.1")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Famili", b =>
|
||||
{
|
||||
b.Property<int>("MsFamiliId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsFamiliId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsFamiliId");
|
||||
|
||||
b.ToTable("ms_famili");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Group", b =>
|
||||
{
|
||||
b.Property<int>("MsGroupId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsGroupId"));
|
||||
|
||||
b.Property<string>("Alias")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("CreatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("UpdatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("MsGroupId");
|
||||
|
||||
b.ToTable("ms_group");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Habitat", b =>
|
||||
{
|
||||
b.Property<int>("MsHabitusId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsHabitusId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsHabitusId");
|
||||
|
||||
b.ToTable("ms_habitus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Lokasi", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiId"));
|
||||
|
||||
b.Property<string>("Area")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("area");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<int?>("Kode")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("kode");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Region")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("region");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.HasKey("MsLokasiId");
|
||||
|
||||
b.ToTable("ms_lokasi");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.LokasiTumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiTumbuhanId"));
|
||||
|
||||
b.Property<int>("MsLokasiId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_lokasi_id");
|
||||
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_tumbuhan_id");
|
||||
|
||||
b.HasKey("MsLokasiTumbuhanId");
|
||||
|
||||
b.ToTable("ms_lokasi_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Menu", b =>
|
||||
{
|
||||
b.Property<int>("MsMenuId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsMenuId"));
|
||||
|
||||
b.Property<string>("MenuIcon")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_icon");
|
||||
|
||||
b.Property<string>("MenuType")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_type");
|
||||
|
||||
b.Property<string>("Module")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Ordering")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("ParentId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("parent_id");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Url")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsMenuId");
|
||||
|
||||
b.ToTable("ms_menu");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Tumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsTumbuhanId"));
|
||||
|
||||
b.Property<string>("Cites")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("cites");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<string>("Iucn")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("iucn");
|
||||
|
||||
b.Property<int>("MsFamiliId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_famili_id");
|
||||
|
||||
b.Property<int>("MsHabitatId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_habitus_id");
|
||||
|
||||
b.Property<string>("NamaIlmiah")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name_ilmiah");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("StatusPerlindungan")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status_perlindungan");
|
||||
|
||||
b.Property<bool>("TanamanKhasJakarta")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("tanaman_khas_jakarta");
|
||||
|
||||
b.HasKey("MsTumbuhanId");
|
||||
|
||||
b.ToTable("ms_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.User", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("MsGroupId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_group_id");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Username")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("users");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace kehati.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AddFaunaTable : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ms_fauna",
|
||||
columns: table => new
|
||||
{
|
||||
MsFaunaId = table.Column<int>(type: "integer", nullable: false)
|
||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||
ms_famili_id = table.Column<int>(type: "integer", nullable: false),
|
||||
ms_habitus_id = table.Column<int>(type: "integer", nullable: false),
|
||||
slug = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||
name = table.Column<string>(type: "character varying(200)", maxLength: 200, nullable: false),
|
||||
nama_ilmiah = table.Column<string>(type: "text", nullable: false),
|
||||
status = table.Column<string>(type: "text", nullable: true),
|
||||
image = table.Column<string>(type: "text", nullable: true),
|
||||
created_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
||||
updated_at = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_MsFaunaId", x => x.MsFaunaId);
|
||||
table.ForeignKey(
|
||||
name: "FK_FamiliId",
|
||||
column: x => x.ms_famili_id,
|
||||
principalTable: "ms_famili",
|
||||
principalColumn: "MsFamiliId");
|
||||
table.ForeignKey(
|
||||
name: "FK_HabitusId",
|
||||
column: x => x.ms_habitus_id,
|
||||
principalTable: "ms_habitus",
|
||||
principalColumn: "MsHabitusId");
|
||||
});
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "ms_fauna");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,287 @@
|
|||
// <auto-generated />
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
using kehati.Database;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace kehati.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
partial class ApplicationDbContextModelSnapshot : ModelSnapshot
|
||||
{
|
||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "9.0.1")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Famili", b =>
|
||||
{
|
||||
b.Property<int>("MsFamiliId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsFamiliId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsFamiliId");
|
||||
|
||||
b.ToTable("ms_famili");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Group", b =>
|
||||
{
|
||||
b.Property<int>("MsGroupId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsGroupId"));
|
||||
|
||||
b.Property<string>("Alias")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("CreatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("UpdatedBy")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("MsGroupId");
|
||||
|
||||
b.ToTable("ms_group");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Habitat", b =>
|
||||
{
|
||||
b.Property<int>("MsHabitusId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsHabitusId"));
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsHabitusId");
|
||||
|
||||
b.ToTable("ms_habitus");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Lokasi", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiId"));
|
||||
|
||||
b.Property<string>("Area")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("area");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<int?>("Kode")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("kode");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Region")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("region");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status");
|
||||
|
||||
b.HasKey("MsLokasiId");
|
||||
|
||||
b.ToTable("ms_lokasi");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.LokasiTumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsLokasiTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsLokasiTumbuhanId"));
|
||||
|
||||
b.Property<int>("MsLokasiId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_lokasi_id");
|
||||
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_tumbuhan_id");
|
||||
|
||||
b.HasKey("MsLokasiTumbuhanId");
|
||||
|
||||
b.ToTable("ms_lokasi_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Menu", b =>
|
||||
{
|
||||
b.Property<int>("MsMenuId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsMenuId"));
|
||||
|
||||
b.Property<string>("MenuIcon")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_icon");
|
||||
|
||||
b.Property<string>("MenuType")
|
||||
.IsRequired()
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("menu_type");
|
||||
|
||||
b.Property<string>("Module")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Ordering")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("ParentId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("parent_id");
|
||||
|
||||
b.Property<string>("Status")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Url")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("MsMenuId");
|
||||
|
||||
b.ToTable("ms_menu");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.Master.Tumbuhan", b =>
|
||||
{
|
||||
b.Property<int>("MsTumbuhanId")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("MsTumbuhanId"));
|
||||
|
||||
b.Property<string>("Cites")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("cites");
|
||||
|
||||
b.Property<string>("Image")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("image");
|
||||
|
||||
b.Property<string>("Iucn")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("iucn");
|
||||
|
||||
b.Property<int>("MsFamiliId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_famili_id");
|
||||
|
||||
b.Property<int>("MsHabitatId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_habitus_id");
|
||||
|
||||
b.Property<string>("NamaIlmiah")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name_ilmiah");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("name");
|
||||
|
||||
b.Property<string>("Slug")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("slug");
|
||||
|
||||
b.Property<string>("StatusPerlindungan")
|
||||
.HasColumnType("text")
|
||||
.HasColumnName("status_perlindungan");
|
||||
|
||||
b.Property<bool>("TanamanKhasJakarta")
|
||||
.HasColumnType("boolean")
|
||||
.HasColumnName("tanaman_khas_jakarta");
|
||||
|
||||
b.HasKey("MsTumbuhanId");
|
||||
|
||||
b.ToTable("ms_tumbuhan");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("kehati.Models.Entity.User", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("MsGroupId")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("ms_group_id");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<string>("Username")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("users");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
[Table("ms_famili")]
|
||||
public class Famili
|
||||
{
|
||||
[Key]
|
||||
public int MsFamiliId { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
[Column("name")]
|
||||
public string? Name { get; set; } = "";
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
[Table("ms_fauna")]
|
||||
public class Fauna
|
||||
{
|
||||
[Key]
|
||||
public int MsFaunaId { get; set; }
|
||||
[Column("ms_famili_id")]
|
||||
public string? MsFamiliId {get;set;} = "";
|
||||
[Column("ms_habitus_id")]
|
||||
public string? MsHabitusId {get;set;} = "";
|
||||
[Column("slug")]
|
||||
public string? Slug {get;set;} = "";
|
||||
[Column("name")]
|
||||
public string? Name {get;set;} = "";
|
||||
[Column("nama_ilmiah")]
|
||||
public string? NamaIlmiah {get;set;} = "";
|
||||
[Column("status")]
|
||||
public string? Status {get;set;} = "";
|
||||
[Column("image")]
|
||||
public string? Image {get;set;} = "";
|
||||
}
|
||||
|
|
@ -1,13 +1,20 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
[Table("ms_group")]
|
||||
public class Group
|
||||
{
|
||||
[Key]
|
||||
public int MsGroupId { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
public string Alias { get; set; } = "";
|
||||
public string Status { get; set; } = "";
|
||||
public int CreatedBy { get; set; }
|
||||
public int UpdatedBy { get; set; }
|
||||
[Column("name")]
|
||||
public string? Name { get; set; } = "";
|
||||
[Column("alias")]
|
||||
public string? Alias { get; set; } = "";
|
||||
[Column("status")]
|
||||
public string? Status { get; set; } = "";
|
||||
[Column("created_by")]
|
||||
public int? CreatedBy { get; set; }
|
||||
[Column("updated_by")]
|
||||
public int? UpdatedBy { get; set; }
|
||||
}
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
[Table("ms_habitus")]
|
||||
public class Habitat
|
||||
{
|
||||
[Key]
|
||||
public int MsHabitusId { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
[Column("name")]
|
||||
public string? Name { get; set; } = "";
|
||||
}
|
||||
|
|
@ -1,11 +1,24 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
[Table("ms_lokasi")]
|
||||
public class Lokasi
|
||||
{
|
||||
[Key]
|
||||
public int MsLokasiId { get; set; }
|
||||
[Column("name")]
|
||||
public string Name { get; set; } = "";
|
||||
public string Kode { get; set; } = "";
|
||||
public string Status { get; set; } = "";
|
||||
[Column("kode")]
|
||||
public int? Kode { get; set; }
|
||||
[Column("status")]
|
||||
public string? Status { get; set; } = "";
|
||||
[Column("image")]
|
||||
public string? Image { get; set; } = "";
|
||||
[Column("slug")]
|
||||
public string? Slug { get; set; } = "";
|
||||
[Column("region")]
|
||||
public string? Region { get; set; } = "";
|
||||
[Column("area")]
|
||||
public string? Area { get; set; } = "";
|
||||
}
|
||||
|
|
@ -1,8 +1,10 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
[Table("ms_lokasi_tumbuhan")]
|
||||
public class LokasiTumbuhan
|
||||
{
|
||||
[Key]
|
||||
public int MsLokasiTumbuhanId { get; set; }
|
||||
[Column("ms_tumbuhan_id")]
|
||||
public int MsTumbuhanId { get; set; }
|
||||
|
|
|
|||
|
|
@ -1,19 +1,26 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
[Table("ms_menu")]
|
||||
public class Menu
|
||||
{
|
||||
[Key]
|
||||
public int MsMenuId { get; set; }
|
||||
[Column("parent_id")]
|
||||
public int ParentId { get; set; }
|
||||
public string Title { get; set; } = "";
|
||||
public string Module { get; set; } = "";
|
||||
public string Url { get; set; } = "";
|
||||
public int? ParentId { get; set; }
|
||||
[Column("title")]
|
||||
public string? Title { get; set; } = "";
|
||||
[Column("module")]
|
||||
public string? Module { get; set; } = "";
|
||||
[Column("url")]
|
||||
public string? Url { get; set; } = "";
|
||||
[Column("menu_type")]
|
||||
public string MenuType { get; set; } = "";
|
||||
public string? MenuType { get; set; } = "";
|
||||
[Column("menu_icon")]
|
||||
public string MenuIcon { get; set; } = "";
|
||||
public string? MenuIcon { get; set; } = "";
|
||||
[Column("ordering")]
|
||||
|
||||
public string Ordering { get; set; } = "";
|
||||
public string Status { get; set; } = "";
|
||||
public string? Ordering { get; set; } = "";
|
||||
[Column("status")]
|
||||
public string? Status { get; set; } = "";
|
||||
}
|
||||
|
|
@ -1,22 +1,29 @@
|
|||
namespace kehati.Models.Entity.Master;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
[Table("ms_tumbuhan")]
|
||||
public class Tumbuhan
|
||||
{
|
||||
[Key]
|
||||
public int MsTumbuhanId { get; set; }
|
||||
[Column("ms_famili_id")]
|
||||
public int MsFamiliId { get; set; }
|
||||
[Column("ms_habitus_id")]
|
||||
public int MsHabitatId { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
[Column("name")]
|
||||
public string? Name { get; set; } = "";
|
||||
[Column("name_ilmiah")]
|
||||
public string NamaIlmiah { get; set; } = "";
|
||||
public string? NamaIlmiah { get; set; } = "";
|
||||
[Column("tanaman_khas_jakarta")]
|
||||
public bool TanamanKhasJakarta { get; set; }
|
||||
[Column("status_perlindungan")]
|
||||
public string StatusPerlindungan { get; set; } = "";
|
||||
public string? StatusPerlindungan { get; set; } = "";
|
||||
[Column("iucn")]
|
||||
public string Iucn { get; set; } = "";
|
||||
public string? Iucn { get; set; } = "";
|
||||
[Column("cites")]
|
||||
public string Cites { get; set; } = "";
|
||||
public string? Cites { get; set; } = "";
|
||||
[Column("slug")]
|
||||
public string? Slug { get; set; } = "";
|
||||
[Column("image")]
|
||||
public string? Image { get; set; } = "";
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using kehati.Data;
|
||||
using kehati.Database;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
@{
|
||||
ViewData["Title"] = "Detail Katalog";
|
||||
}
|
||||
|
||||
<div class="mx-auto max-w-6xl px-4 py-12 sm:px-6 lg:px-8">
|
||||
<a asp-controller="Katalog" asp-action="Index" class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground">
|
||||
<i data-lucide="arrow-left" class="h-4 w-4"></i> Katalog
|
||||
</a>
|
||||
<div class="mt-6 grid gap-10 lg:grid-cols-5">
|
||||
<div class="lg:col-span-3">
|
||||
<div class="overflow-hidden rounded-2xl border border-border bg-muted">
|
||||
<img src="~/images/@Model.Spesies.Image" class="aspect-[4/3] w-full object-cover" alt="@Model.Spesies.CommonName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:col-span-2">
|
||||
<div class="inline-flex items-center gap-1.5 rounded-full bg-secondary px-2.5 py-1 text-[11px] font-medium text-foreground">
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i> @Model.Spesies.Type
|
||||
</div>
|
||||
|
||||
<h1 class="mt-4 font-serif text-4xl leading-tight text-foreground sm:text-5xl">
|
||||
@Model.Spesies.CommonName
|
||||
</h1>
|
||||
<p class="mt-1 text-lg italic text-muted-foreground">
|
||||
@Model.Spesies.ScientificName
|
||||
</p>
|
||||
<div class="mt-4">
|
||||
<span class="rounded-full border border-border px-3 py-1 text-xs">
|
||||
Status: @Model.Spesies.ConservationStatus
|
||||
</span>
|
||||
</div>
|
||||
<p class="mt-6 text-base leading-relaxed text-foreground">
|
||||
@Model.Spesies.Description
|
||||
</p>
|
||||
|
||||
<div class="mt-8 rounded-xl border border-border bg-secondary/40 p-5">
|
||||
<h3 class="text-sm font-semibold text-foreground">
|
||||
Habitat
|
||||
</h3>
|
||||
<p class="mt-2 text-sm leading-relaxed text-muted-foreground">
|
||||
@Model.Spesies.Habitat
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mt-16">
|
||||
<h2 class="font-serif text-2xl text-foreground">
|
||||
Dapat ditemukan di
|
||||
</h2>
|
||||
<div class="mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
|
||||
@foreach(var l in Model.FeaturedLocations)
|
||||
{
|
||||
<a asp-controller="lokasi" asp-action="detail" asp-route-slug="@l.Slug" class="group flex items-center gap-4 rounded-xl border border-border bg-card p-3 transition-colors hover:border-primary/40 hover:bg-secondary/60">
|
||||
<img src="~/images/@l.Image" class="h-14 w-14 rounded-lg object-cover" alt="@l.Name" />
|
||||
<div class="min-w-0 flex-1">
|
||||
<div class="truncate font-medium text-foreground">
|
||||
@l.Name
|
||||
</div>
|
||||
<div class="flex items-center gap-1 text-xs text-muted-foreground">
|
||||
<i data-lucide="map-pin" class="h-3 w-3"></i>
|
||||
@l.Region
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
@using kehati.Models.View
|
||||
@{
|
||||
ViewData["Title"] = "Katalog";
|
||||
var statusColor = new Dictionary<string, string>
|
||||
{
|
||||
{ "Aman", "bg-primary/10 text-primary border-primary/20" },
|
||||
{ "Rentan", "bg-amber-100 text-amber-800 border-amber-200" },
|
||||
{ "Terancam", "bg-orange-100 text-orange-800 border-orange-200" },
|
||||
{ "Kritis", "bg-red-100 text-red-800 border-red-200" },
|
||||
{ "Dilindungi", "bg-emerald-100 text-emerald-800 border-emerald-200" }
|
||||
};
|
||||
}
|
||||
|
||||
<div class="mx-auto max-w-7xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="max-w-2xl">
|
||||
<div class="text-xs font-medium uppercase tracking-widest text-primary">
|
||||
Katalog
|
||||
</div>
|
||||
<h1 class="mt-3 font-serif text-5xl leading-tight text-foreground">
|
||||
Flora & Fauna Jakarta
|
||||
</h1>
|
||||
<p class="mt-4 text-lg text-muted-foreground">
|
||||
Telusuri spesies yang terdokumentasi di kawasan konservasi Jakarta.
|
||||
</p>
|
||||
</div>
|
||||
<!-- Filter -->
|
||||
<form method="get" asp-action="Index">
|
||||
<div class="mt-10 rounded-2xl border border-border bg-card p-4 sm:p-5">
|
||||
<div class="grid gap-3 sm:grid-cols-2 lg:grid-cols-4">
|
||||
<input
|
||||
type="text"
|
||||
name="query"
|
||||
value="@Model.Query"
|
||||
placeholder="Cari nama atau nama ilmiah..."
|
||||
class="w-full rounded-lg border border-input bg-background px-3 py-2" />
|
||||
|
||||
<select name="type" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all">Semua Jenis</option>
|
||||
<option value="flora" selected="@(Model.Type=="flora")">Flora</option>
|
||||
<option value="fauna" selected="@(Model.Type=="fauna")">Fauna</option>
|
||||
</select>
|
||||
<select name="status" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all" selected="@(Model.Status == "all")">Semua Status</option>
|
||||
<option value="Aman" selected="@(Model.Status == "Aman")">Aman</option>
|
||||
<option value="Rentan" selected="@(Model.Status == "Rentan")">Rentan</option>
|
||||
<option value="Terancam" selected="@(Model.Status == "Terancam")">Terancam</option>
|
||||
<option value="Kritis" selected="@(Model.Status == "Kritis")">Kritis</option>
|
||||
<option value="Dilindungi" selected="@(Model.Status == "Dilindungi")">Dilindungi</option>
|
||||
</select>
|
||||
<select name="lokasi" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all">Semua Lokasi</option>
|
||||
@foreach(LokasiModel loc in Model.FeaturedLocations)
|
||||
{
|
||||
<option value="@loc.Slug"
|
||||
selected="@(Model.lokasi==loc.Slug)">
|
||||
@loc.Name
|
||||
</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<button type="submit" class="rounded-lg bg-primary px-5 py-2 text-primary-foreground">Cari</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="mt-6 text-sm text-muted-foreground">
|
||||
@Model.FeaturedSpesies.Count spesies ditemukan
|
||||
</div>
|
||||
@if(Model.FeaturedSpesies.Count == 0)
|
||||
{
|
||||
<div class="mt-16 rounded-2xl border border-dashed border-border p-12 text-center">
|
||||
<p class="text-muted-foreground">
|
||||
Tidak ada spesies yang cocok dengan filter Anda.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
||||
@foreach(var s in Model.FeaturedSpesies)
|
||||
{
|
||||
<a asp-controller="katalog"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@s.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||
<img src="~/images/@s.Image"
|
||||
alt="@s.CommonName"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
|
||||
<!-- Type Badge -->
|
||||
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||
@if(s.Type == "Flora")
|
||||
{
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||
}
|
||||
@s.Type
|
||||
</div>
|
||||
</div>
|
||||
<!-- Content -->
|
||||
<div class="p-4">
|
||||
<div class="flex items-start justify-between gap-2">
|
||||
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||
@s.CommonName
|
||||
</h3>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||
@s.ScientificName
|
||||
</p>
|
||||
<!-- Status Badge -->
|
||||
<div class="mt-3">
|
||||
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||
? statusColor[s.ConservationStatus]
|
||||
: "")">
|
||||
@s.ConservationStatus
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
@{
|
||||
ViewData["Title"] = "Detail Katalog";
|
||||
}
|
||||
|
||||
<div class="mx-auto max-w-6xl px-4 py-12 sm:px-6 lg:px-8">
|
||||
<a asp-controller="Katalog" asp-action="Index" class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground">
|
||||
<i data-lucide="arrow-left" class="h-4 w-4"></i> Katalog
|
||||
</a>
|
||||
<div class="mt-6 grid gap-10 lg:grid-cols-5">
|
||||
<div class="lg:col-span-3">
|
||||
<div class="overflow-hidden rounded-2xl border border-border bg-muted">
|
||||
<img src="~/images/@Model.Spesies.Image" class="aspect-[4/3] w-full object-cover" alt="@Model.Spesies.CommonName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:col-span-2">
|
||||
<div class="inline-flex items-center gap-1.5 rounded-full bg-secondary px-2.5 py-1 text-[11px] font-medium text-foreground">
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i> @Model.Spesies.Type
|
||||
</div>
|
||||
|
||||
<h1 class="mt-4 font-serif text-4xl leading-tight text-foreground sm:text-5xl">
|
||||
@Model.Spesies.CommonName
|
||||
</h1>
|
||||
<p class="mt-1 text-lg italic text-muted-foreground">
|
||||
@Model.Spesies.ScientificName
|
||||
</p>
|
||||
<div class="mt-4">
|
||||
<span class="rounded-full border border-border px-3 py-1 text-xs">
|
||||
Status: @Model.Spesies.ConservationStatus
|
||||
</span>
|
||||
</div>
|
||||
<p class="mt-6 text-base leading-relaxed text-foreground">
|
||||
@Model.Spesies.Description
|
||||
</p>
|
||||
|
||||
<div class="mt-8 rounded-xl border border-border bg-secondary/40 p-5">
|
||||
<h3 class="text-sm font-semibold text-foreground">
|
||||
Habitat
|
||||
</h3>
|
||||
<p class="mt-2 text-sm leading-relaxed text-muted-foreground">
|
||||
@Model.Spesies.Habitat
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mt-16">
|
||||
<h2 class="font-serif text-2xl text-foreground">
|
||||
Dapat ditemukan di
|
||||
</h2>
|
||||
<div class="mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
|
||||
@foreach(var l in Model.FeaturedLocations)
|
||||
{
|
||||
<a asp-controller="lokasi" asp-action="detail" asp-route-slug="@l.Slug" class="group flex items-center gap-4 rounded-xl border border-border bg-card p-3 transition-colors hover:border-primary/40 hover:bg-secondary/60">
|
||||
<img src="~/images/@l.Image" class="h-14 w-14 rounded-lg object-cover" alt="@l.Name" />
|
||||
<div class="min-w-0 flex-1">
|
||||
<div class="truncate font-medium text-foreground">
|
||||
@l.Name
|
||||
</div>
|
||||
<div class="flex items-center gap-1 text-xs text-muted-foreground">
|
||||
<i data-lucide="map-pin" class="h-3 w-3"></i>
|
||||
@l.Region
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
@using kehati.Models.View
|
||||
@{
|
||||
ViewData["Title"] = "Katalog";
|
||||
var statusColor = new Dictionary<string, string>
|
||||
{
|
||||
{ "Aman", "bg-primary/10 text-primary border-primary/20" },
|
||||
{ "Rentan", "bg-amber-100 text-amber-800 border-amber-200" },
|
||||
{ "Terancam", "bg-orange-100 text-orange-800 border-orange-200" },
|
||||
{ "Kritis", "bg-red-100 text-red-800 border-red-200" },
|
||||
{ "Dilindungi", "bg-emerald-100 text-emerald-800 border-emerald-200" }
|
||||
};
|
||||
}
|
||||
|
||||
<div class="mx-auto max-w-7xl px-4 py-16 sm:px-6 lg:px-8">
|
||||
<div class="max-w-2xl">
|
||||
<div class="text-xs font-medium uppercase tracking-widest text-primary">
|
||||
Katalog
|
||||
</div>
|
||||
<h1 class="mt-3 font-serif text-5xl leading-tight text-foreground">
|
||||
Flora & Fauna Jakarta
|
||||
</h1>
|
||||
<p class="mt-4 text-lg text-muted-foreground">
|
||||
Telusuri spesies yang terdokumentasi di kawasan konservasi Jakarta.
|
||||
</p>
|
||||
</div>
|
||||
<!-- Filter -->
|
||||
<form method="get" asp-action="Index">
|
||||
<div class="mt-10 rounded-2xl border border-border bg-card p-4 sm:p-5">
|
||||
<div class="grid gap-3 sm:grid-cols-2 lg:grid-cols-4">
|
||||
<input
|
||||
type="text"
|
||||
name="query"
|
||||
value="@Model.Query"
|
||||
placeholder="Cari nama atau nama ilmiah..."
|
||||
class="w-full rounded-lg border border-input bg-background px-3 py-2" />
|
||||
|
||||
<select name="type" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all">Semua Jenis</option>
|
||||
<option value="flora" selected="@(Model.Type=="flora")">Flora</option>
|
||||
<option value="fauna" selected="@(Model.Type=="fauna")">Fauna</option>
|
||||
</select>
|
||||
<select name="status" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all" selected="@(Model.Status == "all")">Semua Status</option>
|
||||
<option value="Aman" selected="@(Model.Status == "Aman")">Aman</option>
|
||||
<option value="Rentan" selected="@(Model.Status == "Rentan")">Rentan</option>
|
||||
<option value="Terancam" selected="@(Model.Status == "Terancam")">Terancam</option>
|
||||
<option value="Kritis" selected="@(Model.Status == "Kritis")">Kritis</option>
|
||||
<option value="Dilindungi" selected="@(Model.Status == "Dilindungi")">Dilindungi</option>
|
||||
</select>
|
||||
<select name="lokasi" class="w-full rounded-lg border border-input bg-background px-3 py-2">
|
||||
<option value="all">Semua Lokasi</option>
|
||||
@foreach(LokasiModel loc in Model.FeaturedLocations)
|
||||
{
|
||||
<option value="@loc.Slug"
|
||||
selected="@(Model.lokasi==loc.Slug)">
|
||||
@loc.Name
|
||||
</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<button type="submit" class="rounded-lg bg-primary px-5 py-2 text-primary-foreground">Cari</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="mt-6 text-sm text-muted-foreground">
|
||||
@Model.FeaturedSpesies.Count spesies ditemukan
|
||||
</div>
|
||||
@if(Model.FeaturedSpesies.Count == 0)
|
||||
{
|
||||
<div class="mt-16 rounded-2xl border border-dashed border-border p-12 text-center">
|
||||
<p class="text-muted-foreground">
|
||||
Tidak ada spesies yang cocok dengan filter Anda.
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
|
||||
@foreach(var s in Model.FeaturedSpesies)
|
||||
{
|
||||
<a asp-controller="katalog"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@s.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||
<img src="~/images/@s.Image"
|
||||
alt="@s.CommonName"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
|
||||
<!-- Type Badge -->
|
||||
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||
@if(s.Type == "Flora")
|
||||
{
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||
}
|
||||
@s.Type
|
||||
</div>
|
||||
</div>
|
||||
<!-- Content -->
|
||||
<div class="p-4">
|
||||
<div class="flex items-start justify-between gap-2">
|
||||
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||
@s.CommonName
|
||||
</h3>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||
@s.ScientificName
|
||||
</p>
|
||||
<!-- Status Badge -->
|
||||
<div class="mt-3">
|
||||
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||
? statusColor[s.ConservationStatus]
|
||||
: "")">
|
||||
@s.ConservationStatus
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
@ -7,7 +7,8 @@
|
|||
{ "Rentan", "bg-amber-100 text-amber-800 border-amber-200" },
|
||||
{ "Terancam", "bg-orange-100 text-orange-800 border-orange-200" },
|
||||
{ "Kritis", "bg-red-100 text-red-800 border-red-200" },
|
||||
{ "Dilindungi", "bg-emerald-100 text-emerald-800 border-emerald-200" }
|
||||
{ "Dilindungi", "bg-emerald-100 text-emerald-800 border-emerald-200" },
|
||||
{ "Tidak Dilindungi", "bg-grey-100 text-emerald-800 border-emerald-200" }
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -148,107 +149,56 @@
|
|||
</a>
|
||||
</div>
|
||||
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
||||
@foreach(LokasiModel loc in Model.FeaturedLocations)
|
||||
@foreach (var loc in ViewBag.lokasiHome)
|
||||
{
|
||||
<a asp-controller="lokasi"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@loc.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
|
||||
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[16/10] overflow-hidden bg-muted">
|
||||
|
||||
|
||||
<img src="~/images/@loc.Image"
|
||||
alt="@loc.Name"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
|
||||
|
||||
<!-- Gradient -->
|
||||
<div class="absolute inset-0 bg-gradient-to-t from-black/60 via-black/10 to-transparent"></div>
|
||||
|
||||
|
||||
|
||||
<!-- Overlay Text -->
|
||||
<div class="absolute inset-x-0 bottom-0 p-4 text-white">
|
||||
|
||||
|
||||
<div class="flex items-center gap-1.5 text-[11px] uppercase tracking-wider text-white/80">
|
||||
|
||||
|
||||
<i data-lucide="map-pin" class="h-3 w-3"></i>
|
||||
|
||||
@loc.Region
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h3 class="mt-1 font-serif text-xl leading-tight">
|
||||
|
||||
@loc.Name
|
||||
|
||||
</h3>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Footer Card -->
|
||||
<div class="flex items-center justify-between p-4 text-sm">
|
||||
|
||||
|
||||
<span class="text-muted-foreground">
|
||||
|
||||
@loc.Area
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
<div class="flex gap-3 text-foreground">
|
||||
|
||||
|
||||
<span class="flex items-center gap-1">
|
||||
|
||||
<i data-lucide="leaf"
|
||||
class="h-4 w-4 text-primary"></i>
|
||||
|
||||
@loc.FloraCount Flora
|
||||
|
||||
12 Flora
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
<span class="flex items-center gap-1">
|
||||
|
||||
<i data-lucide="bird"
|
||||
class="h-4 w-4 text-primary"></i>
|
||||
|
||||
@loc.FaunaCount Fauna
|
||||
|
||||
12 Fauna
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SPESIES -->
|
||||
<!-- Flora -->
|
||||
|
||||
<section class="mx-auto max-w-7xl px-4 pb-24 sm:px-6 lg:px-8">
|
||||
<div class="flex items-end justify-between gap-4">
|
||||
|
|
@ -258,65 +208,147 @@
|
|||
Katalog Pilihan
|
||||
</div>
|
||||
<h2 class="mt-3 font-serif text-4xl text-foreground">
|
||||
Flora & Fauna khas Jakarta
|
||||
Flora khas Jakarta
|
||||
</h2>
|
||||
</div>
|
||||
<a asp-controller="Katalog"
|
||||
<a asp-controller="flora"
|
||||
asp-action="Index"
|
||||
class="hidden shrink-0 items-center gap-1.5 text-sm font-medium text-primary hover:underline sm:inline-flex">
|
||||
Semua spesies
|
||||
Semua flora
|
||||
<i data-lucide="arrow-right" class="h-4 w-4"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
|
||||
@foreach(SpesiesModel s in Model.FeaturedSpesies)
|
||||
{
|
||||
<a asp-controller="katalog"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@s.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||
<img src="~/images/@s.Image"
|
||||
alt="@s.CommonName"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
@if (ViewBag.tumbuhanHome != null && ViewBag.tumbuhanHome.Count > 0){
|
||||
@foreach (var s in ViewBag.tumbuhanHome)
|
||||
{
|
||||
<a asp-controller="flora"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@s.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||
<img src="~/images/@s.Image"
|
||||
alt="@s.Name"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
|
||||
<!-- Type Badge -->
|
||||
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||
@if(s.Type == "Flora")
|
||||
{
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<i data-lucide="bird" class="h-3 w-3"></i>
|
||||
}
|
||||
@s.Type
|
||||
<!-- Type Badge -->
|
||||
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||
@* @if(s.Type == "Flora") *@
|
||||
@* { *@
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||
@* } *@
|
||||
@* else *@
|
||||
@* { *@
|
||||
@* <i data-lucide="bird" class="h-3 w-3"></i> *@
|
||||
@* } *@
|
||||
@* @s.Cites *@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Content -->
|
||||
<div class="p-4">
|
||||
<div class="flex items-start justify-between gap-2">
|
||||
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||
@s.CommonName
|
||||
</h3>
|
||||
<!-- Content -->
|
||||
<div class="p-4">
|
||||
<div class="flex items-start justify-between gap-2">
|
||||
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||
@s.NamaIlmiah
|
||||
</h3>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||
@s.NamaIlmiah
|
||||
</p>
|
||||
<!-- Status Badge -->
|
||||
<div class="mt-3">
|
||||
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||
@(statusColor.ContainsKey(s.StatusPerlindungan)
|
||||
? statusColor[s.StatusPerlindungan]
|
||||
: "")">
|
||||
@s.StatusPerlindungan
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||
@s.ScientificName
|
||||
</p>
|
||||
<!-- Status Badge -->
|
||||
<div class="mt-3">
|
||||
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||
@(statusColor.ContainsKey(s.ConservationStatus)
|
||||
? statusColor[s.ConservationStatus]
|
||||
: "")">
|
||||
@s.ConservationStatus
|
||||
</span>
|
||||
</a>
|
||||
}
|
||||
}else{
|
||||
<h4>Data Tidak Ada</h4>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- Fauna -->
|
||||
<section class="mx-auto max-w-7xl px-4 pb-24 sm:px-6 lg:px-8">
|
||||
<div class="flex items-end justify-between gap-4">
|
||||
<div>
|
||||
<div class="inline-flex items-center gap-2 text-xs font-medium uppercase tracking-widest text-primary">
|
||||
<i data-lucide="leaf" class="h-4 w-4"></i>
|
||||
Katalog Pilihan
|
||||
</div>
|
||||
<h2 class="mt-3 font-serif text-4xl text-foreground">
|
||||
Fauna khas Jakarta
|
||||
</h2>
|
||||
</div>
|
||||
<a asp-controller="fauna"
|
||||
asp-action="Index"
|
||||
class="hidden shrink-0 items-center gap-1.5 text-sm font-medium text-primary hover:underline sm:inline-flex">
|
||||
Semua fauna
|
||||
<i data-lucide="arrow-right" class="h-4 w-4"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="mt-8 grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
|
||||
@if (ViewBag.faunaHome != null && ViewBag.faunaHome.Count > 0)
|
||||
{
|
||||
@foreach (var s in ViewBag.faunaHome)
|
||||
{
|
||||
<a asp-controller="fauna"
|
||||
asp-action="detail"
|
||||
asp-route-slug="@s.Slug"
|
||||
class="group block overflow-hidden rounded-2xl border border-border bg-card transition-all hover:-translate-y-1 hover:shadow-lg">
|
||||
<!-- Image -->
|
||||
<div class="relative aspect-[4/3] overflow-hidden bg-muted">
|
||||
<img src="~/images/@s.Image"
|
||||
alt="@s.Name"
|
||||
loading="lazy"
|
||||
asp-append-version="true"
|
||||
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" />
|
||||
|
||||
<!-- Type Badge -->
|
||||
<div class="absolute left-3 top-3 flex items-center gap-1.5 rounded-full bg-background/90 px-2.5 py-1 text-[11px] font-medium capitalize backdrop-blur">
|
||||
@* @if(s.Type == "Flora") *@
|
||||
@* { *@
|
||||
<i data-lucide="leaf" class="h-3 w-3"></i>
|
||||
@* } *@
|
||||
@* else *@
|
||||
@* { *@
|
||||
@* <i data-lucide="bird" class="h-3 w-3"></i> *@
|
||||
@* } *@
|
||||
@* @s.Cites *@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<!-- Content -->
|
||||
<div class="p-4">
|
||||
<div class="flex items-start justify-between gap-2">
|
||||
<h3 class="font-serif text-lg leading-tight text-foreground">
|
||||
@s.NamaIlmiah
|
||||
</h3>
|
||||
</div>
|
||||
<p class="mt-0.5 text-xs italic text-muted-foreground">
|
||||
@s.NamaIlmiah
|
||||
</p>
|
||||
<!-- Status Badge -->
|
||||
<div class="mt-3">
|
||||
<span class="inline-flex items-center rounded-md border px-2.5 py-1 text-xs font-medium
|
||||
@(statusColor.ContainsKey(s.Status)
|
||||
? statusColor[s.Status]
|
||||
: "")">
|
||||
@s.Status
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
}else{
|
||||
<h4>Data Tidak Ada</h4>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -68,10 +68,16 @@
|
|||
Lokasi
|
||||
</a>
|
||||
|
||||
<a asp-controller="katalog"
|
||||
<a asp-controller="flora"
|
||||
asp-action="Index"
|
||||
class="rounded-lg px-3.5 py-2 text-sm font-medium transition-colors hover:bg-secondary hover:text-foreground @(currentPath != null && currentPath.StartsWith("/katalog") ? "bg-secondary text-foreground" : "text-muted-foreground")">
|
||||
Katalog
|
||||
class="rounded-lg px-3.5 py-2 text-sm font-medium transition-colors hover:bg-secondary hover:text-foreground @(currentPath != null && currentPath.StartsWith("/flora") ? "bg-secondary text-foreground" : "text-muted-foreground")">
|
||||
Flora
|
||||
</a>
|
||||
|
||||
<a asp-controller="fauna"
|
||||
asp-action="Index"
|
||||
class="rounded-lg px-3.5 py-2 text-sm font-medium transition-colors hover:bg-secondary hover:text-foreground @(currentPath != null && currentPath.StartsWith("/fauna") ? "bg-secondary text-foreground" : "text-muted-foreground")">
|
||||
Fauna
|
||||
</a>
|
||||
|
||||
<a asp-controller="map"
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -8,12 +8,317 @@
|
|||
".NETCoreApp,Version=v9.0": {
|
||||
"kehati/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Design": "9.0.0",
|
||||
"Npgsql.EntityFrameworkCore.PostgreSQL": "9.0.4"
|
||||
},
|
||||
"runtime": {
|
||||
"kehati.dll": {}
|
||||
}
|
||||
},
|
||||
"Humanizer.Core/2.14.1": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Humanizer.dll": {
|
||||
"assemblyVersion": "2.14.0.0",
|
||||
"fileVersion": "2.14.1.48190"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Build.Framework/17.8.3": {},
|
||||
"Microsoft.Build.Locator/1.7.8": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Build.Locator.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.7.8.28074"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Analyzers/3.3.4": {},
|
||||
"Microsoft.CodeAnalysis.Common/4.8.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.CodeAnalysis.Analyzers": "3.3.4",
|
||||
"System.Collections.Immutable": "7.0.0",
|
||||
"System.Reflection.Metadata": "7.0.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp/4.8.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.CodeAnalysis.Common": "4.8.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": {
|
||||
"dependencies": {
|
||||
"Humanizer.Core": "2.14.1",
|
||||
"Microsoft.CodeAnalysis.CSharp": "4.8.0",
|
||||
"Microsoft.CodeAnalysis.Common": "4.8.0",
|
||||
"Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": {
|
||||
"dependencies": {
|
||||
"Humanizer.Core": "2.14.1",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "7.0.0",
|
||||
"Microsoft.CodeAnalysis.Common": "4.8.0",
|
||||
"System.Composition": "7.0.0",
|
||||
"System.IO.Pipelines": "7.0.0",
|
||||
"System.Threading.Channels": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.Workspaces.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Build.Framework": "17.8.3",
|
||||
"Microsoft.CodeAnalysis.Common": "4.8.0",
|
||||
"Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0",
|
||||
"System.Text.Json": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
},
|
||||
"lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll": {
|
||||
"assemblyVersion": "4.8.0.0",
|
||||
"fileVersion": "4.800.23.55801"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/9.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": "9.0.1",
|
||||
|
|
@ -37,6 +342,29 @@
|
|||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/9.0.1": {},
|
||||
"Microsoft.EntityFrameworkCore.Design/9.0.0": {
|
||||
"dependencies": {
|
||||
"Humanizer.Core": "2.14.1",
|
||||
"Microsoft.Build.Framework": "17.8.3",
|
||||
"Microsoft.Build.Locator": "1.7.8",
|
||||
"Microsoft.CodeAnalysis.CSharp": "4.8.0",
|
||||
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0",
|
||||
"Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0",
|
||||
"Microsoft.EntityFrameworkCore.Relational": "9.0.1",
|
||||
"Microsoft.Extensions.Caching.Memory": "9.0.1",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
|
||||
"Microsoft.Extensions.DependencyModel": "9.0.0",
|
||||
"Microsoft.Extensions.Logging": "9.0.1",
|
||||
"Mono.TextTemplating": "3.0.0",
|
||||
"System.Text.Json": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52902"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Relational/9.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore": "9.0.1",
|
||||
|
|
@ -107,6 +435,14 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyModel/9.0.0": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.DependencyModel.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "9.0.1",
|
||||
|
|
@ -151,6 +487,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Mono.TextTemplating/3.0.0": {
|
||||
"dependencies": {
|
||||
"System.CodeDom": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Mono.TextTemplating.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Npgsql/9.0.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.1"
|
||||
|
|
@ -174,7 +521,85 @@
|
|||
"fileVersion": "9.0.4.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.CodeDom/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/net6.0/System.CodeDom.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {},
|
||||
"System.Composition/7.0.0": {
|
||||
"dependencies": {
|
||||
"System.Composition.AttributedModel": "7.0.0",
|
||||
"System.Composition.Convention": "7.0.0",
|
||||
"System.Composition.Hosting": "7.0.0",
|
||||
"System.Composition.Runtime": "7.0.0",
|
||||
"System.Composition.TypedParts": "7.0.0"
|
||||
}
|
||||
},
|
||||
"System.Composition.AttributedModel/7.0.0": {
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Composition.AttributedModel.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Composition.Convention/7.0.0": {
|
||||
"dependencies": {
|
||||
"System.Composition.AttributedModel": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Composition.Convention.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Composition.Hosting/7.0.0": {
|
||||
"dependencies": {
|
||||
"System.Composition.Runtime": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Composition.Hosting.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Composition.Runtime/7.0.0": {
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Composition.Runtime.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Composition.TypedParts/7.0.0": {
|
||||
"dependencies": {
|
||||
"System.Composition.AttributedModel": "7.0.0",
|
||||
"System.Composition.Hosting": "7.0.0",
|
||||
"System.Composition.Runtime": "7.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Composition.TypedParts.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.0.22.51805"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines/7.0.0": {},
|
||||
"System.Reflection.Metadata/7.0.0": {
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "7.0.0"
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
|
||||
"System.Text.Json/9.0.0": {},
|
||||
"System.Threading.Channels/7.0.0": {}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
|
|
@ -183,6 +608,76 @@
|
|||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Humanizer.Core/2.14.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==",
|
||||
"path": "humanizer.core/2.14.1",
|
||||
"hashPath": "humanizer.core.2.14.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3aeMZ1N0lJoSyzqiP03hqemtb1BijhsJADdobn/4nsMJ8V1H+CrpuduUe4hlRdx+ikBQju1VGjMD1GJ3Sk05Eg==",
|
||||
"path": "microsoft.bcl.asyncinterfaces/7.0.0",
|
||||
"hashPath": "microsoft.bcl.asyncinterfaces.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Build.Framework/17.8.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-NrQZJW8TlKVPx72yltGb8SVz3P5mNRk9fNiD/ao8jRSk48WqIIdCn99q4IjlVmPcruuQ+yLdjNQLL8Rb4c916g==",
|
||||
"path": "microsoft.build.framework/17.8.3",
|
||||
"hashPath": "microsoft.build.framework.17.8.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Build.Locator/1.7.8": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-sPy10x527Ph16S2u0yGME4S6ohBKJ69WfjeGG/bvELYeZVmJdKjxgnlL8cJJJLGV/cZIRqSfB12UDB8ICakOog==",
|
||||
"path": "microsoft.build.locator/1.7.8",
|
||||
"hashPath": "microsoft.build.locator.1.7.8.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Analyzers/3.3.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==",
|
||||
"path": "microsoft.codeanalysis.analyzers/3.3.4",
|
||||
"hashPath": "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Common/4.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/jR+e/9aT+BApoQJABlVCKnnggGQbvGh7BKq2/wI1LamxC+LbzhcLj4Vj7gXCofl1n4E521YfF9w0WcASGg/KA==",
|
||||
"path": "microsoft.codeanalysis.common/4.8.0",
|
||||
"hashPath": "microsoft.codeanalysis.common.4.8.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp/4.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-+3+qfdb/aaGD8PZRCrsdobbzGs1m9u119SkkJt8e/mk3xLJz/udLtS2T6nY27OTXxBBw10HzAbC8Z9w08VyP/g==",
|
||||
"path": "microsoft.codeanalysis.csharp/4.8.0",
|
||||
"hashPath": "microsoft.codeanalysis.csharp.4.8.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3amm4tq4Lo8/BGvg9p3BJh3S9nKq2wqCXfS7138i69TUpo/bD+XvD0hNurpEBtcNZhi1FyutiomKJqVF39ugYA==",
|
||||
"path": "microsoft.codeanalysis.csharp.workspaces/4.8.0",
|
||||
"hashPath": "microsoft.codeanalysis.csharp.workspaces.4.8.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-LXyV+MJKsKRu3FGJA3OmSk40OUIa/dQCFLOnm5X8MNcujx7hzGu8o+zjXlb/cy5xUdZK2UKYb9YaQ2E8m9QehQ==",
|
||||
"path": "microsoft.codeanalysis.workspaces.common/4.8.0",
|
||||
"hashPath": "microsoft.codeanalysis.workspaces.common.4.8.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IEYreI82QZKklp54yPHxZNG9EKSK6nHEkeuf+0Asie9llgS1gp0V1hw7ODG+QyoB7MuAnNQHmeV1Per/ECpv6A==",
|
||||
"path": "microsoft.codeanalysis.workspaces.msbuild/4.8.0",
|
||||
"hashPath": "microsoft.codeanalysis.workspaces.msbuild.4.8.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
|
@ -204,6 +699,13 @@
|
|||
"path": "microsoft.entityframeworkcore.analyzers/9.0.1",
|
||||
"hashPath": "microsoft.entityframeworkcore.analyzers.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Design/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Pqo8I+yHJ3VQrAoY0hiSncf+5P7gN/RkNilK5e+/K/yKh+yAWxdUAI6t0TG26a9VPlCa9FhyklzyFvRyj3YG9A==",
|
||||
"path": "microsoft.entityframeworkcore.design/9.0.0",
|
||||
"hashPath": "microsoft.entityframeworkcore.design.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Relational/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
|
@ -246,6 +748,13 @@
|
|||
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyModel/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==",
|
||||
"path": "microsoft.extensions.dependencymodel/9.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
|
@ -274,6 +783,13 @@
|
|||
"path": "microsoft.extensions.primitives/9.0.1",
|
||||
"hashPath": "microsoft.extensions.primitives.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"Mono.TextTemplating/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==",
|
||||
"path": "mono.texttemplating/3.0.0",
|
||||
"hashPath": "mono.texttemplating.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"Npgsql/9.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
|
@ -287,6 +803,97 @@
|
|||
"sha512": "sha512-mw5vcY2IEc7L+IeGrxpp/J5OSnCcjkjAgJYCm/eD52wpZze8zsSifdqV7zXslSMmfJG2iIUGZyo3KuDtEFKwMQ==",
|
||||
"path": "npgsql.entityframeworkcore.postgresql/9.0.4",
|
||||
"hashPath": "npgsql.entityframeworkcore.postgresql.9.0.4.nupkg.sha512"
|
||||
},
|
||||
"System.CodeDom/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==",
|
||||
"path": "system.codedom/6.0.0",
|
||||
"hashPath": "system.codedom.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dQPcs0U1IKnBdRDBkrCTi1FoajSTBzLcVTpjO4MBCMC7f4pDOIPzgBoX8JjG7X6uZRJ8EBxsi8+DR1JuwjnzOQ==",
|
||||
"path": "system.collections.immutable/7.0.0",
|
||||
"hashPath": "system.collections.immutable.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-tRwgcAkDd85O8Aq6zHDANzQaq380cek9lbMg5Qma46u5BZXq/G+XvIYmu+UI+BIIZ9zssXLYrkTykEqxxvhcmg==",
|
||||
"path": "system.composition/7.0.0",
|
||||
"hashPath": "system.composition.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition.AttributedModel/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-2QzClqjElKxgI1jK1Jztnq44/8DmSuTSGGahXqQ4TdEV0h9s2KikQZIgcEqVzR7OuWDFPGLHIprBJGQEPr8fAQ==",
|
||||
"path": "system.composition.attributedmodel/7.0.0",
|
||||
"hashPath": "system.composition.attributedmodel.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition.Convention/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IMhTlpCs4HmlD8B+J8/kWfwX7vrBBOs6xyjSTzBlYSs7W4OET4tlkR/Sg9NG8jkdJH9Mymq0qGdYS1VPqRTBnQ==",
|
||||
"path": "system.composition.convention/7.0.0",
|
||||
"hashPath": "system.composition.convention.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition.Hosting/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-eB6gwN9S+54jCTBJ5bpwMOVerKeUfGGTYCzz3QgDr1P55Gg/Wb27ShfPIhLMjmZ3MoAKu8uUSv6fcCdYJTN7Bg==",
|
||||
"path": "system.composition.hosting/7.0.0",
|
||||
"hashPath": "system.composition.hosting.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition.Runtime/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-aZJ1Zr5Txe925rbo4742XifEyW0MIni1eiUebmcrP3HwLXZ3IbXUj4MFMUH/RmnJOAQiS401leg/2Sz1MkApDw==",
|
||||
"path": "system.composition.runtime/7.0.0",
|
||||
"hashPath": "system.composition.runtime.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Composition.TypedParts/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZK0KNPfbtxVceTwh+oHNGUOYV2WNOHReX2AXipuvkURC7s/jPwoWfsu3SnDBDgofqbiWr96geofdQ2erm/KTHg==",
|
||||
"path": "system.composition.typedparts/7.0.0",
|
||||
"hashPath": "system.composition.typedparts.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.IO.Pipelines/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-jRn6JYnNPW6xgQazROBLSfpdoczRw694vO5kKvMcNnpXuolEixUyw6IBuBs2Y2mlSX/LdLvyyWmfXhaI3ND1Yg==",
|
||||
"path": "system.io.pipelines/7.0.0",
|
||||
"hashPath": "system.io.pipelines.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Metadata/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-MclTG61lsD9sYdpNz9xsKBzjsmsfCtcMZYXz/IUr2zlhaTaABonlr1ESeompTgM+Xk+IwtGYU7/voh3YWB/fWw==",
|
||||
"path": "system.reflection.metadata/7.0.0",
|
||||
"hashPath": "system.reflection.metadata.7.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Json/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==",
|
||||
"path": "system.text.json/9.0.0",
|
||||
"hashPath": "system.text.json.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Threading.Channels/7.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-qmeeYNROMsONF6ndEZcIQ+VxR4Q/TX/7uIVLJqtwIWL7dDWeh0l1UIqgo4wYyjG//5lUNhwkLDSFl+pAWO6oiA==",
|
||||
"path": "system.threading.channels/7.0.0",
|
||||
"hashPath": "system.threading.channels.7.0.0.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue