Asp.net Core Web API Work -Get API

 Firt we create controller ,


using AutoMapper;

using Microsoft.AspNetCore.Mvc;

using Microsoft.Extensions.Logging;

 

using QOCR.IRepository.OcrMaster;

using System;

using System.Threading.Tasks;


namespace QOCR.API.Controllers.OcrMaster

{

    //[Authorize]

    [Route("api/[controller]")]

    [ApiController]

    public class StatusMasterController : ControllerBase

    {

        private IStatusMasterRepository _repos;

        private readonly IMapper _mapper;

        private readonly ILogger<StatusMasterController> _logger;




        public StatusMasterController(IStatusMasterRepository repos, IMapper mapper, ILogger<StatusMasterController> logger)

        {

            _repos = repos;

            _mapper = mapper;

            _logger = logger;

        }




        #region FetchStatus


        [HttpGet("FetchStatusMaster")]

        public async Task<IActionResult> FetchStatusMasterList()

        {


            try

            {

                var result = await Task.Run(() => _repos.FetchStatusMasterList());

                

                return Ok(result);

            }

            catch (Exception ex)

            {

                return BadRequest(ex.Message);

            }

        }

         




        #endregion

    }

}

==============================================


2. We make IRepository

using QOCR.Dtos.Common;
using QOCR.Models.Common;
using QOCR.Models.General;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace QOCR.IRepository.OcrMaster
{
    public interface IStatusMasterRepository
    {

        Task<Dictionary<string, object>> FetchStatusMasterList();
    }
}


================================================

3.We make Repository

using Microsoft.EntityFrameworkCore;
using QOCR.DBEntity;
using QOCR.IRepository.OcrMaster;
using QOCR.Models.Common;
using QOCR.Services.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QOCR.Repository.OcrMaster
{
    public class StatusMasterRepository : IStatusMasterRepository
    {

        #region Fetch Status Master
        public async Task<Dictionary<string, object>> FetchStatusMasterList()
        {
            Dictionary<string, object> resJson = new Dictionary<string, object>();
            try
            {
                using (var _DBEntity = new OcrDBEntity())
                {
                    _DBEntity.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

                    var query = (from status in _DBEntity.statusMasters
                                 where status.is_active == 1
                                 select new
                                 {
                                     status_master_pk = status.status_master_pk,
                                     status_name = status.status_name,
                                     is_Active=status.is_active,
                                     created_by_fk=status.created_by_fk,
                                     created_on=status.created_on,
                                     last_updated_fk=status.last_updated_by_fk,
                                     last_updated_on=status.last_updated_on,
                                     version_no=status.version_no
                                 }).Distinct().ToList();

                    var list = query.OrderBy(a => a.status_name).ToList();
                    resJson = Response.SuccessResponse("Success", Enumerations.ErrorCodes.GFS000001.ToString(), list);
                }
            }
            catch (Exception exp)
            {
                throw exp;
            }

            return await Task.FromResult(resJson);
        }


        #endregion
    }
}


================================================================

3.Make DBEntity

using QOCR.DBEntity;
//using QOCR.Models.CapacityManagement;
using QOCR.Models.Common;
using QOCR.Models.ContractManagement;
using QOCR.Models.General;
//using QOCR.Models.OrderManagement;
using QOCR.Models.Organization;
//using QOCR.Models.Scheduling;
using QOCR.Models.Settings;
using QOCR.Models.AuditLog;
//using QOCR.Models.Receivables;
////using QOCR.Models.VesselOperations;
//using QOCR.Models.CargoPlanning;
using Microsoft.EntityFrameworkCore;
 
using QOCR.Models.OcrMaster;
 

namespace QOCR.DBEntity
{
    public class OcrDBEntity : DbContext
    {
        #region Super Constractor

        public OcrDBEntity(DbContextOptions options): base(options)
        {
        }

        public OcrDBEntity()
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var _ConnectionString = AppSettingsService.GetDbConnection();
            optionsBuilder
                //.UseLazyLoadingProxies()
                .UseNpgsql(_ConnectionString);
            base.OnConfiguring(optionsBuilder);
        }

        #endregion Super Constractor

        #region Mapping Table

        public DbSet<StatusMaster> statusMasters { get; set; }
        public DbSet<ProcessMaster> processMasters { get; set; }
       


        public DbSet<DocumentMaster> documentsMasters { get; set; }



        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }

        #endregion Mapping Table

    }
}


=========================================================

4.Make model 

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace QOCR.Models.OcrMaster
{
    [Table("ocr_status_master")]
    public partial class StatusMaster
    {


        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int status_master_pk { get; set; }

        public string status_name { get; set; }
        public int? is_active { get; set; }
        public int? created_by_fk { get; set; }
        public DateTime created_on { get; set; }
        public int? last_updated_by_fk { get; set; }

        public DateTime? last_updated_on { get; set; }
        public int? version_no { get; set; }

        // public virtual ICollection<SomeOtherEntity> SomeOtherEntities { get; set; }



    }
}


=============================================================

5.App Setting 

{
  "ConnectionStrings": {
 
  },
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "DevelopmentMode": "Development",
  "AllowedHosts": "*",
  
   
    },
    "QATesting": {
 
    "Staging": {
      "DbConnection": " ooling=true;"
    },
    "Production": {
      "DbConnection": " "
    }
  },
  "EmailPath": {
 
  },
  "EDI": {
    "PathUpload": "\"..\\..\\Supports\\Files_Uploaded\\EDI\\",
    "EDIGenerate": "\"..\\..\\Supports\\Files_Uploaded\\EDIGenerate\\",
    "EDIInvoiceWatbott": "\"..\\..\\Supports\\Files_Uploaded\\EDIInvoice\\"
  },
  "MSCTauliaSettings": {
    "FilePath": "\"..\\..\\Supports\\EDI\\",
    "CREATEFOLDER": "\"..\\..\\Supports\\EDI\\{0}",
    "ErrorLog": "\"..\\..\\Supports\\EDI\\",
    "TYPE": "1" //1-zip
  },
  "OCR": {
    "PathUpload": "\"..\\..\\Supports\\OCR\\Files_Uploaded\\"
  },
  "Taulia": {
    "PathUpload": "\"..\\..\\Supports\\Taulia\\Files_Uploaded\\"
  },
  "Despacho": {
    "PathUpload": "\"..\\..\\Supports\\Despacho\\Files_Uploaded\\"
  },
  "RPT": {
    "FilePath": "\\152.67.3.233\\QOCR\\RPTDEVAPI\\MergePDF\\"
  },
  "ShareFeature": {
    "AttachmentPath": "Upload",
    "EmailAttachmentPath": "wwwroot/FileAttachment/Email",
    "ProfileImagePath": "wwwroot/FileAttachment/ProfileImg"
  },
  "SwaggerOptions": {
 
  },
 
  },
  "GoogleROE": {
    "ROEUrl": "http://spreadsheets.google.com/feeds/list/0Av2v4lMxiJ1AdE9laEZJdzhmMzdmcW90VWNfUTYtM2c/2/public/basic"
  },

 
  },
 
  "AccessLogSettings": {
    "EnableAccess": true
  },
  "EPPlus": {
    "ExcelPackage": {
      "LicenseContext": "Commercial" //The license context used
    }
  }
}

===============================================================

6. StartUp.cs 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using QOCR.API.Helpers;
using QOCR.IRepository.Common;
using QOCR.IRepository.Organization;

using QOCR.IRepository.Settings;

using QOCR.IRepository.General;

using QOCR.IRepository.Favorites;

using QOCR.Repository.Common;
using QOCR.Repository.Organization;

using QOCR.Repository.Settings;
//using QOCR.Repository.VesselOperations;

using QOCR.Repository.General;

using QOCR.Repository.Favorites;

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using AutoMapper;

using QOCR.API.Controllers.Settings;
using QOCR.API.Controllers.Organization;

using QOCR.API.Controllers.General;

using QOCR.API.Controllers.Favorites;

using Microsoft.OpenApi.Models;
using System.Reflection;
using System.IO;

using QOCR.API.Controllers.Common;
using QOCR.IRepository.Auth;
using QOCR.Repository.Auth;
using QOCR.IRepository.Login;
using QOCR.Repository.Login;
using QOCR.IRepository.Menu;
using QOCR.Repository.Menu;
using QOCR.Models.Common;

using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Mvc;

using QOCR.Dtos.Common;

using QOCR.IRepository.Announcement;
using QOCR.Repository.Announcement;
using QOCR.API.Controllers.Announcement;
using QOCR.API.Common;
using QOCR.DBEntity;
using QOCR.IRepository.OcrMaster;
using QOCR.Repository.OcrMaster;
using QOCR.Repository.OcrMaster;
using QOCR.IRepository.OcrMaster;

namespace QOCR.API
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //services.AddControllers();
            services.AddControllers().AddNewtonsoftJson(options =>
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
            );
            services.AddMvc(options => options.EnableEndpointRouting = false);
            //services.AddCors();
            services.AddCors(c =>
            {
                c.AddPolicy("AllowOrigin", options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
            });          
            
            //Gautam : For Images and Photo
            services.Configure<CloudinarySettings>(Configuration.GetSection("CloudinarySettings"));
            services.Configure<SqlDbSettings>(Configuration.GetSection("SqlDbSettings"));
            services.Configure<MSCTauliaSettings>(Configuration.GetSection("MSCTauliaSettings"));
            services.Configure<AccessLogSettings>(Configuration.GetSection("AccessLogSettings"));

            //services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            //    .AddJwtBearer(options =>
            //    {
            //        options.TokenValidationParameters = new TokenValidationParameters
            //        {
            //            ValidateIssuerSigningKey = true,
            //            IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII
            //                .GetBytes(Configuration.GetSection("AppSettings:Token").Value)),
            //            ValidateIssuer = false,
            //            ValidateAudience = false
            //        };
            //    });

            // Adding Authentication
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            })

            // Adding Jwt Bearer
            .AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidAudience = Configuration.GetSection("AppSettings:ValidAudience").Value,
                    ValidIssuer = Configuration.GetSection("AppSettings:ValidIssuer").Value,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("AppSettings:Token").Value))
                };
            });

            //services.AddSwaggerGen(options =>
            //{
            //    options.SwaggerDoc("v1", new OpenApiInfo { Title = "QOCRApi", Version = "v1" });
            //    //Attaching Applicaton context data into XML file
            //    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            //    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            //    options.IncludeXmlComments(xmlPath);
            //});
            services.AddSwaggerGen(x =>
            {
                x.SwaggerDoc("v1", new OpenApiInfo { Title = "QOCRApi", Version = "v1" });
                x.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description = @"JWT Authorization header using the Bearer scheme. \r\n\r\n
                      Enter 'Bearer' [space] and then your token in the text input below.
                      \r\n\r\nExample: 'Bearer 12345abcdef'",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.ApiKey,
                    Scheme = "Bearer"
                });
                x.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id = "Bearer"
                            },
                            Scheme = "oauth2",
                            Name = "Bearer",
                            In = ParameterLocation.Header,
                        },
                        new List<string>()
                    } });
                // XML Documentation
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                x.IncludeXmlComments(xmlPath);
            });

            //Mapper Section
            services.AddAutoMapper(typeof(CountryController).Assembly);                       
            services.AddAutoMapper(typeof(UserProfileController).Assembly);         
            
            services.AddAutoMapper(typeof(SequenceController).Assembly);
            
            services.AddAutoMapper(typeof(UserRuleController).Assembly);
            
            services.AddAutoMapper(typeof(AttachmentController).Assembly);            
            services.AddAutoMapper(typeof(EmailUtil).Assembly);
           
            services.AddAutoMapper(typeof(MessageCenterController).Assembly);
            services.AddAutoMapper(typeof(EmailManagementController).Assembly);
           
            services.AddAutoMapper(typeof(AnnouncementController).Assembly);
            services.AddAutoMapper(typeof(FavoriteSettingController).Assembly);           

            //Auth
            services.AddSingleton<IAuthRepository, AuthRepository>();
            services.AddSingleton<ILoginRepository, LoginRepository>();

            //Menu
            services.AddSingleton<IMenuRepository, MenuRepository>();
            //General
            services.AddSingleton<IUserRuleRepository, UserRuleRepository>();
            services.AddSingleton<IMessageCenterRepository, MessageCenterRepository>();
            services.AddSingleton<IEmailManagementRepository, EmailManagementRepository>();
            services.AddSingleton<IExceptionRepository, ExceptionRepository>();
            
            services.AddSingleton<IFeedbackRepository, FeedbackRepository>();
            services.AddSingleton<IRegionRepository, RegionRepository>();
            services.AddSingleton<ICountryRepository, CountryRepository>();           
           
            services.AddSingleton<ITerminalRepository, TerminalRepository>();
            services.AddSingleton<ISequenceRepository, SequenceRepository>();

           
            services.AddSingleton<IDepartmentRepository, DepartmentRepository>();
            services.AddSingleton<IDesignationRepository, DesignationRepository>();

            //services.AddSingleton<IVesselRepository, VesselRepository>();
            services.AddSingleton<IDropDownRepository, DropDownRepository>();           

            services.AddSingleton<ILocationRepository, LocationRepository>();            
            //Organization
            services.AddSingleton<ICompanyRepository, CompanyRepository>();
            services.AddSingleton<IUserProfileRepository, UserProfileRepository>();
            
            services.AddSingleton<IRoleRepository, RoleRepository>();

            //OcrMaster
            services.AddSingleton<IStatusMasterRepository, StatusMasterRepository>();
            services.AddSingleton<IProcessMasterRepository, ProcessMasterRepository>();
            services.AddSingleton<IDocumentMasterRepository, DocumentMasterRepository>();


            //attachment
            services.AddSingleton<IAttachmentRepository, AttachmentRepository>();
            services.AddSingleton<IAlertsRepository, AlertsRepository>();
            //end
            //Email
            services.AddSingleton<IEmailUtil, EmailUtil>();
            services.AddSingleton<IEmailData, EmailData>();

            //end

            services.AddSingleton<IWorkFlowRepository, WorkFlowRepository>();
            //end
           
            services.AddSingleton<IEmailUtil, EmailUtil>();
            services.AddSingleton<ITemplateResolver, TemplateResolver>();
            services.Configure<EmailConfig>(Configuration.GetSection(EmailConfig.Option));
            //vessel operations
            //services.AddSingleton<IFixedCostRepository, FixedCostRepository>();
            //services.AddSingleton<ITugInterchangeRepository, TugInterchangeRepository>();
            //services.AddSingleton<IVesselTrackerRepository, VesselTrackerRepository>();
            //end
           
            //Share Feature
            services.AddSingleton<IShareFeatureRepository, ShareFeatureRepository>();
            //end
           
            

            // Announcement
            services.AddAutoMapper(typeof(AnnouncementController).Assembly);
            services.AddSingleton<IAnnouncementRepository, AnnouncementRepository>();
            //End

            // Audit Trail
            services.AddSingleton<IAuditTrailRepository, AuditTrailRepository>();
            services.AddSingleton<IActivityLogRepository, ActivityLogRepository>();
            //End
            
           

            services.AddSingleton<IImagesRepository, ImagesRepository>();
            
            services.AddSingleton<IEscalationRepository, EscalationRepository>();
            services.AddSingleton<IDataArchivalRepository, DataArchivalRepository>();

           
            
            //favorites
            services.AddSingleton<IFavoriteSettingRepository, FavoriteSettingRepository>();
            
               
          
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        [Obsolete]
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler(builder =>
                {
                    builder.Run(async context =>
                    {
                        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

                        var error = context.Features.Get<IExceptionHandlerFeature>();
                        if (error != null)
                        {
                            var InnerExp = error.Error.InnerException;
                            string DetailMsg = string.Empty;
                            if (InnerExp == null)
                            {
                                DetailMsg = error.Error.Message;
                            }
                            else
                            {
                                DetailMsg = ((Npgsql.PostgresException)InnerExp).Code;
                                if (DetailMsg.Contains("2350"))
                                {
                                    DetailMsg = "GFE" + DetailMsg;
                                }
                                else
                                {
                                    DetailMsg = ((Npgsql.PostgresException)InnerExp).Detail;
                                }
                            }
                            context.Response.AddApplicationError(DetailMsg);
                            await context.Response.WriteAsync(DetailMsg);
                        }
                    });
                });
                app.UseHsts();
                app.UseHttpsRedirection();
            }
            //app.UseHsts();
            var swaggerOptions = new Helpers.SwaggerOptions();
            Configuration.GetSection(nameof(Helpers.SwaggerOptions)).Bind(swaggerOptions);
            app.UseSwagger(options => { options.RouteTemplate = swaggerOptions.JsonRoute; });
            app.UseSwaggerUI(options => { options.SwaggerEndpoint(swaggerOptions.UIEndpoint, swaggerOptions.Description); });

            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();
            //app.UseHttpsRedirection();

            app.UseCors(x => x.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseDefaultFiles();
            app.UseStaticFiles();
            app.UseMvc(routes =>
            {
                routes.MapSpaFallbackRoute(
                    name: "spa-fallback",
                    defaults: new { controller = "Fallback", action = "Index" }
                );
            });
        }
    }
}




Comments

Post a Comment

Popular posts from this blog

Show Toaster message Simple example in HTML

₹2.5 Lakh ki Alkaline Machine: Investment Ya Hype?" Japan Technology Wale Alkaline Water Systems: Science Ya Sirf Marketing? "Alkaline Water Machines — Health Ke Naam Par Business?

SQL interview questions