public OperationDetails BuyContainer(int id, int count, string userName) { if (id == 0 || count == 0 || userName == "") { return(new OperationDetails(false, "Не удалось найти объект", this.ToString())); } User user = Database.ClientManager.FindUser(x => x.UserName == userName); if (user != null) { Product container = Database.Products.Get(id); if (container != null) { double price = (container.Sale != 0 ? (container.Price - (container.Price * container.Sale) / 100) : (container.Price)) * count; if (price > user.Client.Money) { return(new OperationDetails(false, "Недостаточно денег", this.ToString())); } if (user.Client.Containers?.FirstOrDefault() != null) { bool flag = true; foreach (var i in user.Client.Containers) { if (i.Container.Id == container.Id) { i.CountOpens += count; flag = false; } } if (flag) { ContainerToCountOpens model = new ContainerToCountOpens(); model.Container = container; model.CountOpens = count; user.Client.Containers.Add(model); } } else { ContainerToCountOpens model = new ContainerToCountOpens(); model.Container = container; model.CountOpens = count; user.Client.Containers.Add(model); } user.Client.Money -= price; Database.ClientManager.Update(user); Database.Save(); return(new OperationDetails(true, "Покупка прошла успешно", this.ToString())); } } return(new OperationDetails(false, "Не удалось найти объект", this.ToString())); }
public OperationDetails SaleProduct(int id, int count, string userName) { User user = Database.ClientManager.FindUser(x => x.UserName == userName); bool flag = false; ContainerToCountOpens delete = new ContainerToCountOpens(); foreach (var i in user.Client.Products) { if (i.Container.Id == id) { if (i.CountOpens > count) { flag = true; i.CountOpens -= count; user.Client.Money += (i.Container.Sale != 0 ? (i.Container.Price - (i.Container.Price * i.Container.Sale) / 100) : (i.Container.Price)) * count; } else if (i.CountOpens == count) { flag = true; delete = i; user.Client.Money += (i.Container.Sale != 0 ? (i.Container.Price - (i.Container.Price * i.Container.Sale) / 100) : (i.Container.Price)) * count; } else if (i.CountOpens < count) { return(new OperationDetails(false, "Количество продуктов меньше, чем " + count, this.ToString())); } } } if (delete != null) { user.Client.Products.Remove(delete); } if (!flag) { return(new OperationDetails(false, "У вас нет такого продукта", this.ToString())); } Database.ClientManager.Update(user); Database.Save(); if (count == 1) { return(new OperationDetails(true, "Товар успешно продан", this.ToString())); } else { return(new OperationDetails(true, "Товары успешно продан", this.ToString())); } }