using System; using System.Collections.Generic; using System.Linq; using Luticate2.Auth.Auth.DataAccess; using Luticate2.Auth.Auth.DataAccess.Models; using Luticate2.Auth.Auth.Dbo; using Luticate2.Auth.Utils.Business.Crud; using Luticate2.Auth.Utils.Business.Fields; using Luticate2.Auth.Utils.Dbo.Fields; using Luticate2.Auth.Utils.Dbo.Result; using Microsoft.EntityFrameworkCore; namespace Luticate2.Auth.Auth.Business { public class LuGroupsBusiness : LuEfCrudBusiness { public LuGroupsBusiness(IServiceProvider serviceProvider) : base(serviceProvider) { } protected override LuResult> Include(LuPartialFieldsDbo partialResponse, IQueryable queryable) { var included = queryable; if (partialResponse.Fields.IsIncluded(x => x.Metadata)) { included = included.Include(x => x.IdNavigation); } return LuResult>.Ok(included); } // protected override LuResult> Filter(LuFilterDbo filter, IQueryable queryable) // { // return LuResult>.Ok(queryable.Where(groups => groups.LuGroupsObjects.Any(objects => objects.Priority == 0))); // } public override LuResult> Create(LuPartialFieldsDbo partialResponse, LuPartialFieldsDbo partialInput, IEnumerable dbos) { var addedDbos = new List(); var addedModels = new List(); var createResult = Execute((context, set) => { foreach (var dbo in dbos) { var model = new LuGroups(); var addResult = ConvertDboToModel(partialInput, dbo, model); if (!addResult) { return addResult.To(); } model.IdNavigation = new LuObjectsMetadata(); set.Add(model); addedModels.Add(model); } context.SaveChanges(); return LuResult.Ok(true); }); if (!createResult) { return createResult.To>(); } var ids = addedModels.Select(x => x.Id); foreach (var addedModel in addedModels) { var addedDbo = new LuGroupDbo(); var convertResult = ConvertModelToDbo(partialResponse, addedModel, addedDbo); if (!convertResult) { return convertResult.To>(); } addedDbos.Add(addedDbo); } return LuResult>.Ok(addedDbos); } } }