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 usersettinglist = await _dal.Query(e => e.CustomerId == request.CustomerId); if (usersettinglist.Any()) { usersettinglist.ForEach(a => { a.ScoreCount = 1; a.SearchCount = 9999; a.ShowCount = 9999; }); await _dal.Update(usersettinglist); } else { 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 : 1, ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 1, }; 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 : 1, ShowCount = customerinfo.FirstOrDefault().IsVIP ? 9999 : 1, }; 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(c => { userbaselist.Where(e => e.CustomerId == c.Id).ToList().ForEach(models => { models.ScoreCount = c.IsVIP ? 1 : 3; models.SearchCount = c.IsVIP ? 9999 : 1; models.ShowCount = c.IsVIP ? 9999 : 1; models.ModifyTime = DateTime.Now; 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); }); } } }