Live Traffic Feed

Thursday, October 11, 2018

Generate 8 digit random alphanumeric string in sql server

Leave a Comment
For generate random alphanumeric string in sql server, use following query:


SELECT CAST((ABS(CHECKSUM(NEWID()))%10) as varchar(1)) + CHAR(ASCII('a')+(ABS(CHECKSUM(NEWID()))%25)) + CHAR(ASCII('A')+(ABS(CHECKSUM(NEWID()))%25)) + left(NEWID(),5)


This will return alphanumeric string with 8 digit.

If you want to use this query to sql server function then refer my another blog from following link:

Use NEWID() in sql server function
Read More

Wednesday, October 10, 2018

How to use NEWID() in sql server function

Leave a Comment
Sql server function not allow to use NEWID() function.

Solution:
-> Create view in same database from following query:

CREATE VIEW [dbo].[GetNewID] AS SELECT NEWID() AS new_id

Now you can use SELECT new_id FROM [dbo].[GetNewID] instead of NEWID() in your query in sql server function.
Read More

Friday, April 27, 2018

get data for candle chart as per specific interval from sql server

Leave a Comment
Query for get data as per specific interval
Assume tablename=UserOrders,column=Price,column for date=CreatedDate, column for confirm order=Status, column for delete row status=IsActive:

Query:

For @interval you can pass any int value.(for ex. for 1 day interval you can pass 1440)


DECLARE @interval INT
SELECT DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,CreatedDate)/@interval)*@interval,0) [date],MAX(Price) high,Min(Price) as low,
       ISNULL((SELECT TOP 1 Price FROM UserOrders WHERE DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,CreatedDate)/@interval)*@interval,0)=DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,U.CreatedDate)/@interval)*@interval,0) AND Status=2 ORDER BY CreatedDate asc),0) [open],
       ISNULL((SELECT TOP 1 Price FROM UserOrders WHERE DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,CreatedDate)/@interval)*@interval,0)=DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,U.CreatedDate)/@interval)*@interval,0) AND Status=2 ORDER BY CreatedDate desc),0) [close]
       from UserOrders U where IsActive=1 AND Status=2 GROUP BY DATEADD(MINUTE,FLOOR(DATEDIFF(MINUTE,0,U.CreatedDate)/@interval)*@interval,0)


Read More

Monday, March 19, 2018

Redirect every request to https from http in angular 5

Leave a Comment
Write in app.component.ts file:

import { environment } from '../environments/environment.prod';



ngOnInit() {
    if (!isDevMode() && environment.production) {
      if (location.protocol === 'http:') {
        window.location.href = location.href.replace('http', 'https');
      }
    }
}


Write your environment.prod.ts file like:
export const environment = {
production: true
};
Read More

Manage Audit using DbContext in Entity Framework 6

Leave a Comment
Create table in sql server (AuditMaster):
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [AuditMaster](
       [AuditId] [int] IDENTITY(1,1) NOT NULL,
       [TableName] [nvarchar](100) NOT NULL, -- for table name
       [PrimaryKeyValues] [nvarchar](100) NOT NULL, -- for identity value of affected table
       [Description] [nvarchar](max) NOT NULL, -- store one string here for track changes in record
       [UserId] [int] NOT NULL, -- store user information who affect that row
       [CreatedDate] [datetime] NOT NULL, -- time tracking purpose
 CONSTRAINT [PK_AuditMaster] PRIMARY KEY CLUSTERED
(
       [AuditId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO


Create class which is partial class of yourdbcontext class:
public partial class YourDbContextClass : Microsoft.EntityFrameworkCore.DbContext
    {
        object GetPrimaryKeyValue(EntityEntry entry)
        {
            foreach (var property in entry.Properties)
            {
                if (property.Metadata.IsPrimaryKey())
                {
                    return property.CurrentValue;
                }
            }
            //var objectStateEntry = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity);
            //return objectStateEntry.EntityKey.EntityKeyValues[0].Value;
            return new object();
        }
        public virtual int SaveChanges(int? objUSerId)
        {
            try
            {

                var changeTrack = ChangeTracker.Entries().Where(p => p.State == EntityState.Added || p.State == EntityState.Deleted || p.State == EntityState.Modified).ToList();
                foreach (var entry in changeTrack)
                {
                    if (entry.Entity != null)
                    {
                        string entityName = string.Empty;
                        string state = string.Empty;
                        var now = DateTime.UtcNow;
                        String Description = string.Empty;
                        //LogMaster log = new LogMaster();

                        switch (entry.State)
                        {
                            case EntityState.Modified:
                                entityName = entry.Entity.GetType().Name;
                                var primaryKey = GetPrimaryKeyValue(entry);
                                //foreach (var prop in entry.OriginalValues.PropertyNames)
                                foreach (var prop in entry.OriginalValues.Properties)
                                {
                                    String originalValue = Convert.ToString(entry.GetDatabaseValues().GetValue<object>(prop));
                                    String currentValue = Convert.ToString(entry.CurrentValues[prop]);
                                    if (originalValue != currentValue)
                                    {
                                        if (currentValue == "False" && prop.PropertyInfo.Name == "IsActive")
                                        {
                                            AuditMaster logDeleted = new AuditMaster()
                                            {
                                                TableName = entityName,
                                                Description = "Delete Record",
                                                PrimaryKeyValues = GetPrimaryKeyValue(entry).ToString(),
                                                UserId = (int)objUSerId,
                                                CreatedDate = now
                                            };
                                            AuditMaster.Add(logDeleted);
                                        }
                                        else
                                        {
                                            Description += prop.Name + ":" + Convert.ToString(originalValue) + " -> " + Convert.ToString(currentValue) + ",";
                                        }
                                    }
                                }
                                if (!string.IsNullOrEmpty(Description))
                                {
                                    AuditMaster log = new AuditMaster()
                                    {
                                        TableName = entityName,
                                        Description = !string.IsNullOrEmpty(Description) ? Description.Remove(Description.Length - 1) : "",
                                        PrimaryKeyValues = primaryKey.ToString(),
                                        UserId = (int)objUSerId,
                                        CreatedDate = now
                                    };

                                    AuditMaster.Add(log);
                                }
                                break;
                            case EntityState.Added:
                                entityName = entry.Entity.GetType().Name;
                                foreach (var prop in entry.OriginalValues.Properties)
                                {
                                    String currentValue = Convert.ToString(entry.CurrentValues[prop]);
                                    Description += prop.Name + ":" + Convert.ToString(currentValue) + ",";
                                }
                                AuditMaster logAdd = new AuditMaster()
                                {
                                    TableName = entityName,
                                    Description = "Add Record->" + Description,
                                    PrimaryKeyValues = "0",
                                    UserId = (int)objUSerId,
                                    CreatedDate = now
                                };
                                AuditMaster.Add(logAdd);
                                break;
                            case EntityState.Deleted:
                                entityName = entry.Entity.GetType().Name;
                                AuditMaster logDelete = new AuditMaster()
                                {
                                    TableName = entityName,
                                    Description = "Delete Record",
                                    PrimaryKeyValues = GetPrimaryKeyValue(entry).ToString(),
                                    UserId = (int)objUSerId,
                                    CreatedDate = now
                                };
                                AuditMaster.Add(logDelete);
                                break;
                            default:
                                break;
                        }
                        //LogMasters.Add(log);
                    }
                }
                return base.SaveChanges();
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public virtual async Task<int> SaveChangesAsync(int? objUSerId)
        {
            try
            {
                var changeTrack = ChangeTracker.Entries().Where(p => p.State == EntityState.Added || p.State == EntityState.Deleted || p.State == EntityState.Modified).ToList();
                foreach (var entry in changeTrack)
                {
                    if (entry.Entity != null)
                    {
                        string entityName = string.Empty;
                        string state = string.Empty;
                        var now = DateTime.UtcNow;
                        String Description = string.Empty;
                        //LogMaster log = new LogMaster();

                        switch (entry.State)
                        {
                            case EntityState.Modified:
                                entityName = entry.Entity.GetType().Name;
                                var primaryKey = GetPrimaryKeyValue(entry);
                                //foreach (var prop in entry.OriginalValues.PropertyNames)
                                foreach (var prop in entry.OriginalValues.Properties)
                                {
                                    String originalValue = Convert.ToString(entry.GetDatabaseValues().GetValue<object>(prop));
                                    String currentValue = Convert.ToString(entry.CurrentValues[prop]);
                                    if (originalValue != currentValue)
                                    {
                                        if (currentValue == "False" && prop.PropertyInfo.Name == "IsActive")
                                        {
                                            AuditMaster logDeleted = new AuditMaster()
                                            {
                                                TableName = entityName,
                                                Description = "Delete Record",
                                                PrimaryKeyValues = GetPrimaryKeyValue(entry).ToString(),
                                                UserId = (int)objUSerId,
                                                CreatedDate = now
                                            };
                                            await AuditMaster.AddAsync(logDeleted);
                                        }
                                        else
                                        {
                                            Description += prop.Name + ":" + Convert.ToString(originalValue) + " -> " + Convert.ToString(currentValue) + ",";

                                        }
                                    }
                                }
                                if (!string.IsNullOrEmpty(Description))
                                {
                                    AuditMaster log = new AuditMaster()
                                    {
                                        TableName = entityName,
                                        Description = !string.IsNullOrEmpty(Description) ? Description.Remove(Description.Length - 1) : "",
                                        PrimaryKeyValues = primaryKey.ToString(),
                                        UserId = (int)objUSerId,
                                        CreatedDate = now
                                    };

                                    await AuditMaster.AddAsync(log);
                                }
                                break;
                            case EntityState.Added:
                                entityName = entry.Entity.GetType().Name;
                                foreach (var prop in entry.OriginalValues.Properties)
                                {
                                    String currentValue = Convert.ToString(entry.CurrentValues[prop]);
                                    Description += prop.Name + ":" + Convert.ToString(currentValue) + ",";
                                }
                                AuditMaster logAdd = new AuditMaster()
                                {
                                    TableName = entityName,
                                    Description = "Add Record->" + Description,
                                    PrimaryKeyValues = "0",
                                    UserId = (int)objUSerId,
                                    CreatedDate = now
                                };
                                await AuditMaster.AddAsync(logAdd);
                                break;
                            case EntityState.Deleted:
                                entityName = entry.Entity.GetType().Name;
                                AuditMaster logDelete = new AuditMaster()
                                {
                                    TableName = entityName,
                                    Description = "Delete Record",
                                    PrimaryKeyValues = GetPrimaryKeyValue(entry).ToString(),
                                    UserId = (int)objUSerId,
                                    CreatedDate = now
                                };
                                await AuditMaster.AddAsync(logDelete);
                                break;
                            default:
                                break;
                        }
                        //LogMasters.Add(log);
                    }
                }
                return await base.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                throw;
            }
        }  
    }


Now if you want to save any records in database then you need to write .savechanges(userid) or .savechanges().


It will track all records which are updated/added/deleted from entity framework.
Read More