Wednesday, January 17, 2024
curd operation using dotnet with using azure cosmodb
controller:
using AutoMapper;
using Core.Data.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.Resource;
using System.Collections.Generic;
using System.Threading.Tasks;
using TodoListAPI.Infrastructure;
using System.Linq;
using System;
using Core.Models.Employees;
namespace API.Controllers
{
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class FamilyController : ControllerBase
{
private readonly IDepartmentRepository departmentRepository;
private readonly IFamilyRepository familyRepository;
private readonly IDesignationRepository designationRepository;
private readonly IMapper mapper;
public FamilyController(IDepartmentRepository departmentRepository, IFamilyRepository familyRepository, IDesignationRepository designationRepository, IMapper mapper)
{
this.departmentRepository = departmentRepository;
this.familyRepository = familyRepository;
this.designationRepository = designationRepository;
this.mapper = mapper;
}
// GET: api/todolist/getAll
[HttpGet]
[Route("GetAll")]
[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")]
[Authorize(Policy = AuthorizationPolicies.EmployeeGroupRequired)]
public async Task>> GetAll()
{
var UserId = Guid.Parse(HttpContext.User.GetObjectId());
var result = (await familyRepository.FindAllAsync(x => x.CreatedBy== UserId)).ToList();
if (result != null)
{
return new OkObjectResult(new { Status = "true", Data = result.ToList() });
}
return new OkObjectResult("false");
}
[HttpPost]
[Route("Update")]
[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")]
[Authorize(Policy = AuthorizationPolicies.AdminGroupRequired)]
public async Task Add(Family request)
{
var UserId = Guid.Parse(HttpContext.User.GetObjectId());
var result = (await familyRepository.FindByAsync(x => x.ID == request.ID)).SingleOrDefault();
if (result == null)
{
var model = mapper.Map(request);
model.CreatedBy = UserId;
await familyRepository.AddAsync(model);
}
else
{
var model = mapper.Map(request);
model.ID = request.ID;
model.ModifiedBy = UserId;
model.CreatedBy = request.CreatedBy;
model.PartitionKey = result.PartitionKey;
await familyRepository.UpdateAsync(model,model.ID);
}
return new OkObjectResult("true");
}
[HttpDelete]
[Route("Delete/{id:Guid}")]
[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")]
[Authorize(Policy = AuthorizationPolicies.AdminGroupRequired)]
public async Task Delete(Guid id)
{
var UserId = HttpContext.User.GetObjectId();
var result = (await familyRepository.FindByAsync(x => x.ID == id)).SingleOrDefault();
if (result != null)
{
await familyRepository.DeleteAsync(result);
return new OkObjectResult("true");
}
return new OkObjectResult("false");
}
[HttpGet]
[Route("GetFamily/{EmpID}")]
[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")]
[Authorize(Policy = AuthorizationPolicies.AdminGroupRequired)]
public async Task> GetId(Guid EmpID)
{
var UserId = Guid.Parse(HttpContext.User.GetObjectId());
var result = (await familyRepository.FindAllAsync(x => x.CreatedBy == EmpID)).ToList();
if (result == null)
{ return new OkObjectResult("false"); }
return new OkObjectResult(result);
}
}
}
model:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Core.Models.Employees
{
public class Family
{
public Family()
{
ID = Guid.NewGuid();
PartitionKey = ID.ToString();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public string PartitionKey { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
public string Relationship { get; set; }
public DateTime? Birthday { get; set; }
public Guid CreatedBy { get; set; }
public Guid ModifiedBy { get; set; }
}
}
core-->config-->models--coremodules:
using Autofac;
using Core.Data.Sql;
using Core.Logging;
using Core.Data.Entities;
using Microsoft.EntityFrameworkCore;
using Core.Services;
//using Core.Data.Entities.Trading;
namespace Core.Configuration
{
public class CoreModule : Module
{
protected override void Load(ContainerBuilder builder)
{
var dbContextOptionsBuilder = new DbContextOptionsBuilder();
builder.RegisterType().As().SingleInstance();
// Logging
builder.RegisterModule();
//Data.SQL
//builder.RegisterType().AsImplementedInterfaces().InstancePerLifetimeScope();
builder.RegisterType()
.WithParameter("options", dbContextOptionsBuilder.Options)
.InstancePerDependency();
builder.RegisterGeneric(typeof(GenericRepository<>)).As(typeof(IGenericRepository<>)).InstancePerLifetimeScope();
}
}
}
core-->config-->Data-->Entity:
IFamilyRepository
using Core.Data.Sql;
using Core.Models.Employees;
using System;
namespace Core.Data.Entities
{
public interface IFamilyRepository : IGenericRepository
{
}
}
FamilyRepository
using Core.Data.Sql;
using System;
;
using Core.Models.Employees;
namespace Core.Data.Entities
{
public class FamilyRepository : GenericRepository, IFamilyRepository
{
private readonly SqlDataContext dataContext;
public FamilyRepository(Func dataContextFactory)
: base(dataContextFactory)
{
}
}
}
core-->config-->Data-->sqlDataContext:
using Microsoft.EntityFrameworkCore;
using JetBrains.Annotations;
using Core.Models.Holidays;
using Core.Models.Employees;
using Core.Models;
using Microsoft.Extensions.Configuration;
using Core.Models.Resume;
//using Core.Models.Trading;
// ReSharper disable StringLiteralTypo
namespace Core.Data.Sql
{
[UsedImplicitly]
public class SqlDataContext : DbContext
{
private readonly IConfiguration configuration;
public DbSet? Families { get; set; }
public SqlDataContext(IConfiguration configuration, DbContextOptions options) : base(options)
{
this.configuration = configuration;
if (Convert.ToBoolean(this.configuration["Environment:CosmosDatabaseCollectionCreate"]))
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//optionsBuilder.UseSqlServer(environment.SqlConnection);
optionsBuilder.UseCosmos(configuration["Environment:CosmosEndPoint"], configuration["Environment:CosmosAccountKey"], configuration["Environment:CosmosDatabaseName"]);
if (Convert.ToBoolean(this.configuration["Environment:CosmosDatabaseCollectionCreate"]))
base.OnConfiguring(optionsBuilder);
}
#region Fields
//private readonly EnvironmentSettings environmentSettings;
//#endregion
//#region Constructors
//public SqlDataContext(EnvironmentSettings environmentSettings)
//{
// this.environmentSettings = environmentSettings;
// Database.EnsureCreated();
// //SQL Command Timeout will be config driven.
// if (environmentSettings.SqlCommandTimeout > 0)
// Database.SetCommandTimeout(environmentSettings.SqlCommandTimeout);
//}
//#endregion
//#region Properties
//public DbSet Users { get; set; }
//public DbSet JobSiteAccounts { get; set; }
//public DbSet JobSiteEmails { get; set; }
//public DbSet JobSiteHistories { get; set; }
//public DbSet JobSiteKeyWords { get; set; }
//public DbSet JobSiteQuestions { get; set; }
//public DbSet JobSiteResumes { get; set; }
//public DbSet Symbols { get; set; }
//public DbSet SymbolSettings { get; set; }
//public DbSet TradeSettings { get; set; }
//public DbSet TradeHistorys { get; set; }
////public DbSet
Subscribe to:
Post Comments (Atom)
Wish You Happy Independence Day -2025
Independence Day Flag சுதந்திர தின விழா - 2025 விண்ணைத் தொடும் பாரதி கனவு வெற்றி பெரும் வீரர் நினைவு, அம்மா மண் தாயின் சுவ...
-
[HttpGet] [Route("GetAll")] [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] [Authorize(Policy = A...
-
Independence Day Flag சுதந்திர தின விழா - 2025 விண்ணைத் தொடும் பாரதி கனவு வெற்றி பெரும் வீரர் நினைவு, அம்மா மண் தாயின் சுவ...