/// <summary> /// To save the configuration in Database /// </summary> /// <param name="attribute"></param> /// <returns></returns> public bool SaveAttributeValue(AttributesBusinessModel attribute) { try { AdminConfigValues adminConfig = _m3pactContext.AdminConfigValues.Where(a => a.AttributeId == attribute.AttributeId && a.RecordStatus == DomainConstants.RecordStatusActive).FirstOrDefault(); adminConfig.AttributeValue = attribute.AttributeValue; adminConfig.ModifiedBy = userContext.UserId; adminConfig.ModifiedDate = DateTime.Now; _m3pactContext.Update(adminConfig); List <ClientConfig> clientConfigs = _m3pactContext.ClientConfig.Where(cc => cc.AttributeId == attribute.AttributeId && cc.RecordStatus == DomainConstants.RecordStatusActive).ToList(); clientConfigs.ForEach(cc => cc.RecordStatus = DomainConstants.RecordStatusInactive); _m3pactContext.UpdateRange(clientConfigs); if (clientConfigs.Count > 0) { List <int> clients = _m3pactContext.Client.Select(c => c.ClientId).ToList(); List <ClientConfig> newClientConfigs = new List <ClientConfig>(); foreach (int client in clients) { ClientConfig clientConfig = new ClientConfig(); clientConfig.AttributeId = attribute.AttributeId; clientConfig.AttributeValue = attribute.AttributeValue; clientConfig.ClientId = client; clientConfig.RecordStatus = DomainConstants.RecordStatusActive; clientConfig.CreatedBy = userContext.UserId; clientConfig.CreatedDate = DateTime.Now; clientConfig.ModifiedDate = DateTime.Now; clientConfig.ModifiedBy = userContext.UserId; newClientConfigs.Add(clientConfig); } _m3pactContext.AddRange(newClientConfigs); } int attributeId = _m3pactContext.Attribute.Where(a => a.AttributeCode == DomainConstants.LastEnteredBusinessDays).Select(a => a.AttributeId).FirstOrDefault(); if (attributeId == attribute.AttributeId) { UpdateProjectedCashForAllClients(attribute); } _m3pactContext.SaveChanges(); return(true); } catch (Exception ex) { throw ex; } }
/// <summary> /// Respository to Business model Mapper /// </summary> /// <param name="attributes"></param> /// <returns></returns> private List <AttributesBusinessModel> RepoToBusinessMapper(IEnumerable <DomainModel.DomainModels.Attribute> attributes) { List <AttributesBusinessModel> attributesBusinessModels = new List <AttributesBusinessModel>(); foreach (DomainModel.DomainModels.Attribute attr in attributes) { AttributesBusinessModel attribute = new AttributesBusinessModel(); attribute.AttributeId = attr.AttributeId; attribute.AttributeCode = attr.AttributeCode; attribute.AttributeName = attr.AttributeName; attribute.AttributeDescription = attr.AttributeDescription; attribute.Control = attr.ControlType.ControlName; attribute.RecordStatus = attr.RecordStatus; attribute.AttributeType = attr.AttributeType; attribute.AttributeValue = attr.AdminConfigValues.Where(a => a.AttributeId == attr.AttributeId).Select(a => a.AttributeValue).FirstOrDefault(); attributesBusinessModels.Add(attribute); } return(attributesBusinessModels); }
/// <summary> /// To update the projected cash for all clients when attribute value is changed. /// </summary> /// <param name="attribute"></param> private void UpdateProjectedCashForAllClients(AttributesBusinessModel attribute) { IEnumerable <Client> clientList = _m3pactContext.Client.ToList(); foreach (Client client in clientList) { if (client.IsActive == DomainConstants.RecordStatusActive) { DepositLogProjectionViewModel depositLogSimpleBusinessDaysViewModel = new DepositLogProjectionViewModel(); depositLogSimpleBusinessDaysViewModel = _depositLogRepository.GetProjectedCashForAClient(client.ClientId, Convert.ToInt32(attribute.AttributeValue), DateTime.Today.Month, DateTime.Today.Year); if (depositLogSimpleBusinessDaysViewModel != null) { if (depositLogSimpleBusinessDaysViewModel.Payments != null || depositLogSimpleBusinessDaysViewModel.NumberOfLastWorkingDaysOrWeeks > 0) { _depositLogRepository.SaveProjectedCashOfAClient(client.ClientId, depositLogSimpleBusinessDaysViewModel); } } } } }
/// <summary> /// Business Method to call repository to save the configuration /// </summary> /// <param name="attribute"></param> /// <returns></returns> public bool SaveAttributeValue(AttributesViewModel attribute) { try { AttributesBusinessModel attributesBusinessModel = new AttributesBusinessModel() { AttributeCode = attribute.AttributeCode, AttributeDescription = attribute.AttributeDescription, AttributeId = attribute.AttributeId, AttributeName = attribute.AttributeName, AttributeType = attribute.AttributeType, AttributeValue = attribute.AttributeValue, Control = attribute.Control, RecordStatus = attribute.RecordStatus, }; _configurationsRepository.SaveAttributeValue(attributesBusinessModel); return(true); } catch (Exception ex) { _logger.Log(ex, LogLevel.Error, ex.Message); return(false); } }