using New_College.IServices; using New_College.Model.Models; using New_College.Services.BASE; using New_College.IRepository.Base; using System.Threading.Tasks; using New_College.Model.ViewModels; using New_College.IRepository; using New_College.Common.WebApiClients.HttpApis; using System; using System.Linq; using System.Collections.Generic; namespace New_College.Services { public class D_UserSettingBaseServices : BaseServices, ID_UserSettingBaseServices { private readonly IBaseRepository _dal; private readonly ID_UserSettingBaseRepository _userSettingBaseRepository; private readonly IV_CustomerInfoRepository _CustomerInfoRepository; public D_UserSettingBaseServices(IBaseRepository dal, IV_CustomerInfoRepository v_CustomerInfoRepository, ID_UserSettingBaseRepository userSettingBaseRepository) { this._dal = dal; base.BaseDal = dal; _CustomerInfoRepository = v_CustomerInfoRepository; _userSettingBaseRepository = userSettingBaseRepository; } public async Task> GetUserBaseSettings(UserSettingBaseRequest request) { return (await _dal.Query(c => c.CustomerId == request.CustomerId)).Select(c => new UserBaseSettingDto() { CustomerId = request.CustomerId, PType = c.PType, ScoreCount = c.ScoreCount, SearchCount = c.SearchCount, }).ToList(); } public async Task SyncBaseInfo(UserSettingBaseRequest request) { var customerinfo = await _CustomerInfoRepository.Query(c => c.Id == request.CustomerId); if (customerinfo == null) { return false; } var basesettinginfo = new D_UserSettingBase() { CustomerId = request.CustomerId, CreateTime = DateTime.Now, IsDelete = false, OrderSort = 0, PType = 0, ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, }; var basesettingtypeinfo = new D_UserSettingBase() { CustomerId = request.CustomerId, CreateTime = DateTime.Now, IsDelete = false, OrderSort = 0, PType = 1, ScoreCount = customerinfo.FirstOrDefault().IsVIP ? 10 : 3, SearchCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 10, }; await _dal.Add(basesettinginfo); await _dal.Add(basesettingtypeinfo); return true; } /// /// /// /// public async Task UpdateBaseInit() { var modelslist = new List(); var customerlist = await _CustomerInfoRepository.Query(c => c.IsDelete == false); var userbaselist = await _userSettingBaseRepository.Query(c => c.IsDelete == false); customerlist.ForEach(async c => { var userbaseinfo = userbaselist.Where(e => e.CustomerId == c.Id); if (userbaselist.Any()) { var models = userbaselist.FirstOrDefault(); models.ScoreCount = c.IsVIP ? 10 : 3; models.SearchCount = c.IsVIP ? 9999 : 10; modelslist.Add(models); } }); await _userSettingBaseRepository.UpdateAllBaseInfo(modelslist); } public async Task UpdateSingleCustomerSetting(UserBaseSettingUpdateDTO request) { var basesettinglist = await _userSettingBaseRepository.Query(c => c.CustomerId == request.CustomerId); basesettinglist.ForEach(async a => { if (request.UType == 0) { a.ScoreCount = a.ScoreCount > 0 ? a.ScoreCount - 1 : 0; } if (request.UType == 1) { a.SearchCount = a.SearchCount > 0 ? a.SearchCount - 1 : 0; } await _userSettingBaseRepository.Update(a); }); } } }