/// <summary>Convert from PaymentMain DTO to entity</summary>
        /// <param name="dbContext">DB Context to use for attaching entity</param>
        /// <param name="dto">DTO to convert from</param>
        /// <param name="dtoEntities">Used internally to track which dtos have been converted to entites already (to avoid re-converting when circularly referenced)</param>
        /// <returns>Resultant PaymentMain entity</returns>
        public static PaymentMain FromDto(FACTS.Framework.DAL.DbContext dbContext, PaymentMainDto dto, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities = null)
        {
            dtoEntities = dtoEntities ?? new Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity>();
            if (dtoEntities.ContainsKey(dto))
            {
                return((PaymentMain)dtoEntities[dto]);
            }

            PaymentMain entity = new PaymentMain();

            dtoEntities.Add(dto, entity);
            FromDtoSet(dbContext, dto, entity, dtoEntities);

            if (dbContext != null)
            {
                dbContext.Entry(entity).State = (dto.IsNew ? EntityState.Added : (dto.IsDeleted ? EntityState.Deleted : EntityState.Modified));
            }

            return(entity);
        }
        /// <summary>Convert from PaymentMain DTO to entity</summary>
        /// <param name="dbContext">DB Context to use for attaching entity</param>
        /// <param name="dto">DTO to convert from</param>
        /// <param name="dtoEntities">Used internally to track which dtos have been converted to entites already (to avoid re-converting when circularly referenced)</param>
        /// <returns>Resultant PaymentMain entity</returns>
        public static PaymentMain FromDto(FACTS.Framework.DAL.DbContext dbContext, PaymentMainDto dto, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities = null)
        {
            dtoEntities = dtoEntities ?? new Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity>();
            if (dtoEntities.ContainsKey(dto))
            {
                return((PaymentMain)dtoEntities[dto]);
            }

            PaymentMain entity = new PaymentMain();

            dtoEntities.Add(dto, entity);

            entity.AgentId                = dto.AgentId;
            entity.BankAccountNumber      = dto.BankAccountNumber;
            entity.BankAccountTypeCode    = dto.BankAccountTypeCode;
            entity.CreateDateTime         = dto.CreateDateTime;
            entity.CreateUserId           = dto.CreateUserId;
            entity.EmployerId             = dto.EmployerId;
            entity.IsAgent                = dto.IsAgent;
            entity.PaymentAmount          = dto.PaymentAmount;
            entity.PaymentMainId          = dto.PaymentMainId;
            entity.PaymentMethodCode      = dto.PaymentMethodCode;
            entity.PaymentStatusCode      = dto.PaymentStatusCode;
            entity.PaymentStatusDate      = dto.PaymentStatusDate;
            entity.PaymentSubmittedDate   = dto.PaymentSubmittedDate;
            entity.PaymentTransactionDate = dto.PaymentTransactionDate;
            entity.RoutingTransitNumber   = dto.RoutingTransitNumber;
            entity.UpdateDateTime         = dto.UpdateDateTime;
            entity.UpdateNumber           = dto.UpdateNumber;
            entity.UpdateProcess          = dto.UpdateProcess;
            entity.UpdateUserId           = dto.UpdateUserId;

            entity.Employer = (dto.Employer == null) ? null : Employer.FromDto(dbContext, dto.Employer, dtoEntities);

            if (dbContext != null)
            {
                dbContext.Entry(entity).State = (dto.IsNew ? EntityState.Added : (dto.IsDeleted ? EntityState.Deleted : EntityState.Modified));
            }

            return(entity);
        }
        protected static void FromDtoSet(FACTS.Framework.DAL.DbContext dbContext, PaymentMainDto dto, PaymentMain entity, Dictionary <FACTS.Framework.Dto.BaseDto, BaseEntity> dtoEntities)
        {
            entity.AgentId                = dto.AgentId;
            entity.BankAccountNumber      = dto.BankAccountNumber;
            entity.BankAccountTypeCode    = dto.BankAccountTypeCode;
            entity.CreateDateTime         = dto.CreateDateTime;
            entity.CreateUserId           = dto.CreateUserId;
            entity.EmployerId             = dto.EmployerId;
            entity.IsAgent                = dto.IsAgent;
            entity.PaymentAmount          = dto.PaymentAmount;
            entity.PaymentMainId          = dto.PaymentMainId;
            entity.PaymentMethodCode      = dto.PaymentMethodCode;
            entity.PaymentStatusCode      = dto.PaymentStatusCode;
            entity.PaymentStatusDate      = dto.PaymentStatusDate;
            entity.PaymentSubmittedDate   = dto.PaymentSubmittedDate;
            entity.PaymentTransactionDate = dto.PaymentTransactionDate;
            entity.RoutingTransitNumber   = dto.RoutingTransitNumber;
            entity.UpdateDateTime         = dto.UpdateDateTime;
            entity.UpdateNumber           = dto.UpdateNumber;
            entity.UpdateProcess          = dto.UpdateProcess;
            entity.UpdateUserId           = dto.UpdateUserId;

            entity.Employer = (dto.Employer == null) ? null : Employer.FromDto(dbContext, dto.Employer, dtoEntities);
        }