private void MapToAudit(AwardTrophy dbentity, AwardTrophyViewModel model)
        {
            bool hasChanged = false;

            if (
                (dbentity.FinYearId != model.FinYearId) ||
                (dbentity.TrophyId != model.TrophyId) ||
                (dbentity.AwardId != model.AwardId)
                )
            {
                hasChanged = true;
            }


            var entity = model.ToEntity(dbentity);


            entity.AwardTrophyAudits
            .ToList()
            .ForEach(a =>
                     a.IsActive = false);

            if (hasChanged)
            {
                var audit = entity.ToAuditEntity();
                entity.AwardTrophyAudits.Add(audit);
            }
        }
 /// <summary>
 /// Convert MNC Entity  into MNC Object
 /// </summary>
 ///<param name="model">AwardTrophyViewModel</param>
 ///<param name="MNCEntity">DataAccess.MNC</param>
 ///<returns>AwardTrophyViewModel</returns>
 public static AwardTrophyViewModel ToViewModel(this AwardTrophy entity,
                                                AwardTrophyViewModel model)
 {
     model.Id        = entity.Id;
     model.IsActive  = entity.IsActive;
     model.FinYearId = entity.FinYearId;
     model.TrophyId  = entity.TrophyId;
     model.AwardId   = entity.AwardId;
     model.FinYear   = entity.FinYear.Name;
     model.Trophy    = entity.Trophy.Name;
     model.Award     = entity.Award.Name;
     model.StartDate = entity.StartDate;
     return(model);
 }
        public async Task <SaveResult> SaveEntity(AwardTrophyViewModel viewModel)
        {
            SaveResult saveResult = new SaveResult();
            Dictionary <bool, string> dictionary = new Dictionary <bool, string>();

            var entity = new AwardTrophy();

            try
            {
                if (viewModel.Id != 0)
                {
                    if (_context.AwardTrophy.IgnoreQueryFilters().Any(a => a.Id == viewModel.Id))
                    {
                        entity = await _context.AwardTrophy.IgnoreQueryFilters().FirstOrDefaultAsync(a => a.Id == viewModel.Id);
                    }

                    MapToAudit(entity, viewModel);
                    _context.AwardTrophy.Update(entity);
                }
                else
                {
                    MapToAudit(entity, viewModel);
                    _context.AwardTrophy.Add(entity);
                }

                await _context.SaveChangesAsync();

                if (entity.Id > 0)
                {
                    saveResult.IsSuccess = true;
                    saveResult.Id        = entity.Id;
                }
            }
            catch (DbUpdateException upDateEx)
            {
                var    results = upDateEx.GetSqlerrorNo();
                string msg     = results == (int)SqlErrNo.FK ? ConstEntity.MissingValueMsg : ConstEntity.UniqueKeyMsg;
                saveResult = dictionary.GetValidateEntityResults(msg).ToSaveResult();
            }
            catch (Exception ex)
            {
                saveResult.Message = CrudError.SaveErrorMsg;
            }


            return(saveResult);
        }
        /// <summary>
        /// Convert MNC Object into MNC Entity
        /// </summary>
        ///<param name="model">MNC</param>
        ///<param name="MNCEntity">DataAccess.MNC</param>
        ///<returns>DataAccess.MNC</returns>
        public static AwardTrophy ToEntity(this AwardTrophyViewModel model, AwardTrophy entity
                                           )
        {
            if (entity.Id == 0)
            {
                entity.CreatedUserId = model.SessionUserId;
                entity.IsActive      = model.IsActive;
            }
            else
            {
                entity.UpdatedUserId    = model.SessionUserId;
                entity.UpdatedTimestamp = DateTime.Now;
            }
            entity.FinYearId = model.FinYearId;
            entity.TrophyId  = model.TrophyId;
            entity.AwardId   = model.AwardId;
            entity.StartDate = model.StartDate;

            return(entity);
        }