using AutoMapper;
using OASystem.Domain.Entities.Groups;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Infrastructure.Repositories.Groups
{
    public class GroupCostParameterRepository : BaseRepository<Grp_GroupCostParameter, Grp_GroupCostParameterView>
    {
        public GroupCostParameterRepository(SqlSugarClient sqlSugar) :
        base(sqlSugar)
        {
        }

        public List<Grp_GroupCostParameter> GetGroupCostParameterListByDiid(int diid)
        {
           return Query(x=>x.DiId == diid).ToList();
        }

        public Grp_GroupCostParameter GetGroupCostParameterMainByDiid(int diid)
        {
            return Query(x => x.DiId == diid).First(x => x.CostType == "A");
        }

        public async Task<bool> UpdateIsShareById(int id,int IsShare)
        {
            return await UpdateAsync(x => x.Id == id, x=>new Grp_GroupCostParameter { IsShare = IsShare });
        }

        public async Task<bool> DeleteGroupCostParameterListByDiid(int diid) 
        {
            return await SoftDeleteAsync(x=>x.DiId == diid);
        }

        public async Task<bool> SaveAsync(List<Grp_GroupCostParameter> List,int Userid, int diid)
        {
            bool isTrue = false;
            try
            {
                BeginTran();
                isTrue = await DeleteGroupCostParameterListByDiid(diid);
                if (List.Count > 0)
                {
                    List.ForEach(x => { x.CreateUserId = Userid; x.CreateTime = DateTime.Now; });
                    isTrue = Adds(List) > 0;
                }
                CommitTran();
            }
            catch (Exception ex)
            {
                RollbackTran();
                isTrue = false;
            }
            return isTrue;
        }
    }
}