public TransactionDetails Update(TransactionDetails transaction) { var entity = Transactions.Single(x => x.Id == transaction.Id); entity.Amount = transaction.Amount; entity.AccountNumber = transaction.AccountNumber; entity.TransactionIdentifier = transaction.TransactionIdentifier; entity.Date = transaction.Date; entity.Partner = transaction.Partner is null ? null: Partners.SingleOrDefault(x => x.Id == transaction.Partner.Id); entity.Condominium = transaction.Condominium is null ? null: Condominiums.SingleOrDefault(x => x.Id == transaction.Condominium.Id); DbContext.RemoveRange(DbContext.TransactionTags.Where(x => x.Transaction == entity)); entity.Tags = transaction.Tags .Select(x => new TransactionTag() { Label = x.Label, Ratio = x.Rate }) .ToList(); DbContext.AddRange(entity.Tags); DbContext.SaveChanges(); return(entity.ToModelDetails()); }
public BillDetails CreateBill(BillDetails bill) { var entity = new Entities.Bill() { Created = bill.Created, Partner = bill.Partner != null?Partners .Single(x => x.Id == bill.Partner.Id) : null, Condominium = bill.Condominium != null?Condominiums .Single(x => x.Id == bill.Condominium.Id) : null, Description = bill.Description, Serial = bill.Serial, PaymentDeadline = bill.PaymentDeadline, Done = bill.Done, Items = bill.Items .Select(x => new Entities.BillItem() { Description = x.Description, Price = x.Price }) .ToList(), Tags = bill.Tags .Select(x => new BillTag() { Label = x.Label, Ratio = x.Rate }) .ToList() }; DbContext.Add(entity); DbContext.Add(entity.Tags); DbContext.Add(entity.Items); DbContext.SaveChanges(); return(entity.ToModelWithItems()); }
public IEnumerable <Condominium> List(CondominiumSearchParams search) { return(Condominiums .ApplySearch(search) .Select(x => x.ToModel()) .ToList()); }
public TransactionDetails Create(TransactionDetails transaction) { var entity = new Entities.Transaction(); if (transaction.Partner != null) { entity.Partner = Partners .Single(x => x.Id == transaction.Partner.Id); } if (transaction.Condominium != null) { entity.Condominium = Condominiums .Single(x => x.Id == transaction.Condominium.Id); } entity.Tags = transaction.Tags .Select(x => new TransactionTag() { Label = x.Label, Ratio = x.Rate }) .ToList(); DbContext.AddRange(entity.Tags); DbContext.Add(transaction); DbContext.SaveChanges(); return(entity.ToModelDetails()); }
public List <PartnerCondominiumBalance> PartnerBalances(int page) { return(Condominiums.SelectMany(x => x.Residents, (condominium, partner) => new PartnerCondominiumBalance() { Partner = partner.ToModel(), Condominium = condominium.ToModel(), Balance = new Balance() { BillsFromPartner = partner.Bills.Where(bill => bill.Condominium.Id == condominium.Id) .Where(bill => !bill.IssuedByCondominium) .Sum(bill => bill.Items.Sum(item => item.Price)), BillsToPartner = partner.Bills.Where(bill => bill.Condominium.Id == condominium.Id) .Where(bill => bill.IssuedByCondominium) .Sum(bill => bill.Items.Sum(x => x.Price)), TransactionFromPartner = partner.Transactions.Where(bill => bill.Condominium.Id == condominium.Id) .Where(transaction => transaction.IsReceived) .Sum(transaction => transaction.Amount), TransactionToPartner = partner.Transactions.Where(bill => bill.Condominium.Id == condominium.Id) .Where(transaction => !transaction.IsReceived) .Sum(transaction => transaction.Amount) } }) .OrderByDescending(x => x.Balance.BillsToPartner - x.Balance.TransactionFromPartner) .Skip(Utils.PageSize * page) .Take(Utils.PageSize + 1) .ToList()); }
public Condominium Update(Condominium condominium) { var entity = Condominiums .First(x => x.Id == condominium.Id); entity.Address = Entities.Address.FromModel(condominium.Address); entity.Name = condominium.Name; DbContext.SaveChanges(); return(entity.ToModel()); }
public Partner Update(PartnerDetails partner) { var p = Partners .Include(x => x.ResidentOf) .First(x => x.Id == partner.Id); p.Address.UpdateFromModel(partner.Address); DbContext.Add(p.Address); p.Name = partner.Name; p.Phone = partner.Phone; p.IsResident = partner.IsResident; p.IsSupplier = partner.IsSupplier; p.ResidentOf = Condominiums .Where(x => partner.Condominiums .Select(c => c.Id) .ToArray() .Contains(x.Id ?? 0)).ToList(); DbContext.SaveChanges(); return(p.ToModel()); }
public Partner Create(PartnerDetails partner) { var entity = new Entities.Partner() { IsResident = partner.IsResident, Address = Entities.Address.FromModel(partner.Address), IsSupplier = partner.IsSupplier, Name = partner.Name, Phone = partner.Phone, Owner = User, ResidentOf = Condominiums .Where(x => partner.Condominiums .Select(c => c.Id) .ToArray() .Contains(x.Id ?? 0)).ToList() }; DbContext.Add(entity); DbContext.Add(entity.Address); DbContext.SaveChanges(); return(entity.ToModel()); }
public BillDetails Edit(BillDetails bill) { var entity = Bills.First(x => x.Id == bill.Id); entity.Created = bill.Created ?? DateTime.Now; entity.Partner = bill.Partner is null ? null: Partners.Single(x => x.Id == bill.Partner.Id); entity.Condominium = bill.Condominium is null ? null: Condominiums.Single(x => x.Id == bill.Condominium.Id); entity.Description = bill.Description; entity.Serial = bill.Serial; entity.PaymentDeadline = bill.PaymentDeadline; entity.Done = bill.Done; DbContext.RemoveRange(BillItems.Where(x => x.Bill == entity)); entity.Items = bill.Items .Select(x => new Entities.BillItem() { Description = x.Description, Price = x.Price }) .ToList(); DbContext.AddRange(entity.Items); DbContext.RemoveRange(DbContext.BillTags.Where(x => x.Bill == entity)); entity.Tags = bill.Tags .Select(x => new BillTag() { Label = x.Label, Ratio = x.Rate }) .ToList(); DbContext.AddRange(entity.Tags); DbContext.SaveChanges(); return(entity.ToModelWithItems()); }
public Condominium Get(int id) => Condominiums.Single(x => x.Id == id).ToModel();