Selamlar, Bir önceki yazımda C# ile örnek sipariş modülü konusuna ufak bir uygulama ile giriş yapmıştık. O projemizde kullandığmız Sale.Library küpüthanemizi bu çalışmamızda biraz daha geliştireceğiz. Bir sipariş nesnesine ürün ekleme, indirim ekleme, ödeme ekleme methodlarını ekliycez. Ve bu eklemeler sonucu oluşan değerlerin hesaplamasını yapacağız. Bu projemizde arayüz olarak Asp.net MVC 3 Razor Page kullanacağız. Şuan için bunun bir önemi yok. Bu sebeble arayüze pek özenmedim. Önemli olan şuan Sale.Library tarafını iyice anlamamız. Projeyi buraya tıklayarak indirebilirsiz.

Projeyi açtığınızda ilk olarak Sale.Library bölümüne dikkatinizi verin. Görüldüğü üzere SaleModel, Product, Payment, Discount classlarımız var. Temel classımız SaleModel'dir. SaleModel içerisinde diğer nesneler List halinde propertyler halinde eklenmiştir. Bu List propertylerine item eklemek için ise methodlarımız mevcut. İlk olarak SaleModel.cs dosyasını inceliyelim.

   //Samet ÇINAR > Sale Model
    public class SaleModel
    {
        /// SaleModel instance alındığında list tipinde olan özellikler null olmaması için cons kullandım.
        /// Aynı zamanda burda tabi ki farklı işlemlerde yapılabilir..
        public SaleModel()
        {
            Products = new List();
            Payments = new List();
            Discounts = new List();
        }
        #region Properties
        public string Code { get; set; }
        public List Products { get; set; }
        public decimal GrandTotal
        {
            get
            {
                return Products.Sum(s => s.Price);
            }
        }
        public decimal TotalQuantity
        {
            get
            {
                if (Products.Any())
                    return Products.Sum(s => s.Quantity);

                return decimal.Zero;
            }
        }
        public List Payments { get; set; }
        
        /// Yapılan ödemelerin toplamı
        public decimal TotalPayment
        {
            get
            {
                if (Payments.Any())
                    return Payments.Sum(s => s.Price);
                return decimal.Zero;
            }
        }
        public List Discounts { get; set; }
        
        /// Yapılan indirimlerin toplamı
        public decimal TotalDiscount
        {
            get
            {
                if (Discounts.Any())
                    return Discounts.Sum(s => s.Price);
                return decimal.Zero;
            }
        }
        
        /// Yapılan ödemeler ile toplam tutarın farkı.
        /// Kalan tutar
        
        public decimal RemainingPrice
        {
            get
            {
                return GrandTotal - (TotalPayment + TotalDiscount);
            }
        }
        #endregion
        #region Methods
        
        /// İlgili SaleModel'e bir satır ürün ekler..
        
        public void AddProduct(Product product)
        {
            this.Products.Add(product);
        }
        
        /// İlgili SaleModel'e bir satır ödeme ekler..
        
        public void AddPayment(Payment payment)
        {
            this.Payments.Add(payment);
        }
        
        /// İlgili SaleModel'e bir satır indirim ekler..
        
        public void AddDiscount(Discount discount)
        {
            this.Discounts.Add(discount);
        }
        #endregion
    }
	

Anlaşılır olması açısından propertylerin üstüne yorum satırları ekledim bunları okumanızda fayda var. Aynı zamanda burda ki yapılanları özetliyelim. Bir SaleModel'imiz var. Bu model içerisinde product, discount, payment nesnelerinden listeler barındırıyor. Product nesnelerinin price toplamlarına göre ortaya çıkan GrandTotal. Discount ve Payment nesnelerinin price toplamı ile GrandTotal arasında farkı bulunan RemainingPrice yani kalan tutar bulunuyor.

Methodlarımız aynı class içerisinde olduğundan bize güzel bir kullanım şekli sağlacak. Instance aldığımız SaleModel'i kullanırken "AddProduct" diyerek yeni ürün ekleyip. Buna bağlı ödeme ve indirimleri saleModel.AddPayment, saleModel.AddDiscount gibi kullanabileceğiz. Product, Discount ve Payment nesnelerimiz ise şu şekilde ;

  public class Product
    {
        public string Name { get; set; }
        public string Barcode { get; set; }
        public decimal Price { get; set; }
        public int Quantity { get; set; }
    }
    public class Discount
    {
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
    public class Payment
    {
        public string Name { get; set; }
        public decimal Price { get; set; }
    }

Ben bu nesnelerde ki özellikleri en temel haliyle yazdım. Siz talep, isteklere göre bunu genişletebilirsiniz. Yukarda anlattığımız olaylar sonucunda bir nesneye ürün ekleyip ödeme ve indirimleri girebilir hale getirdik. Bundan sonra nesnemizi saklama ve istediğimizde cağırma işlemlerini yapacağımız bir class yazalım. Bu classın adına "SaleController" diyorum. Arayüz olarak web ortamı kullanacağımız için nesnemizi Session'a yazıp. İstediğimiz zaman ordan geri çekicez. Bu SaleController.cs ise şu şekilde ;

 public static class SaleController
    {
        /// Session üzerinde SaleModel varsa eğer onu döner yoksa yeni bir nesne oluşturur..
        public static SaleModel GetSale()
        {
            if (System.Web.HttpContext.Current.Session["SaleModel"] != null)
                return (SaleModel)System.Web.HttpContext.Current.Session["SaleModel"];

            return new SaleModel();
        }
        /// İlgili SaleModel'de yapılan değişiklikleri kayıt eder..
        public static void SaveChanges(this SaleModel saleModel)
        {
            //Buralarda veritabanına yazma işlemleri yapılabilir tabi ki.
            //Biz şimdilik sadece Session üzerine yazıyoruz..
            System.Web.HttpContext.Current.Session["SaleModel"] = saleModel;
        }
    }

Burda SaleController nesnesi ile GetSale() dediğimiz session üzerinde SaleModel nesnesi varsa bize onu döndürücek. Yoksa eğer yeni SaleModel oluşturucak. SaveChanges() methodunu cağırdığımız ise SaleModel'in son halini Session'a atıcaktır. Bu methodu (this SaleModel saleModel) olarak extension halinde kullandım. Direk olarak instance aldığımız SaleModel nesnesine .SaveChanges() diyebilmek için. Yorum satırlarında da yazdığım burda ben sadece Session üzerinde işlem yaptım. Eğer bu sipariş modülü veritabanına kayıt yapılacaksa o işlemler burda olabilir.

Yada Sale.Data diye farklı katman yapıp burda veritabanına kayıt işlemleri yapılabilir. Bu tarzda bir çalışmayı sonra ki yazılarımda yapacağım. Asp.net MVC ile Sale.Web projesi açtım. Bunuda projeyi indirdiğinizde görüceksiniz. Burda da ürün ekleme, ödeme ekleme, indirim ekleme methodlarının kullanımını görüceksiniz. Bu bölümlerde html form post etme işlemleri var pek anlatıcak birşey yok.

Projeyi indirirseniz eğer rahatlıkla kullanımlarını inceleyebilirsiniz zaten. C# ile gerçekten güzel bir sipariş modülü yaptık. Bu modülü küçümsemeyin, temel olarak çok iyi bence. Bunun üstüne geliştirme yaparak projeler geliştirebilirsiniz benden söylemesi.

Samet ÇINAR Hakkında

2010 senesinden bu yana hem tam zamanlı hemde freelance olarak Yazılım Geliştirme Uzmanı olarak çalışmaktayım. Her gün daha güzel geliştirmeler yapmak için araştırıp öğrenmeyi, öğrendiklerimi aktarmayı çok seviyorum.

İLGİLİ YAZILAR

YORUMLAR

Ufuk

4.7.2015

hocam güzel bi giriş olmuş şahsen benim adıma iyi bir başlangıç ve eğitici oLdu baya diğer yazıları bilmem de bu yazının serisini bekliyorum :)

ThomasImmax

31.12.2018

Наше производство Компания «Пожтехспас» выполняет полный производственный цикл, а значит полностью отвечает за высокое качество и надежность продукции в эксплуатации. Все сотрудники компании — квалифицированные специалисты и профессионалы своего дела. Для производства противопожарной техники они используют только высококачественные материалы, самое современное оборудование и новейшие технологии. Лафетные стволы "Пожтехспас" Предназначены для бесперебойной подачи сплошной или распыленной струи воды (в некоторых случаях пены низкой кратности) в зону возгорания. Учитывая мощность напора, который подается на ствол, лафет также обеспечивает устойчивость конструкции и позволяет ствольщику свободно управлять. Входит в комплект обязательного оборудования любой пожарной команды. Также он может устанавливаться на территориях больших промышленных объектов с целью обеспечения общей пожарной безопасности и незамедлительного реагирования в случае возникновения непредвиденной ситуации. Кроме тушения пожаров, универсальный лафетный ствол может использоваться для осаждения токсичных и ядовитых облаков газа, пара или пыли, а также для охлаждения любых строительных или технологических конструкций. Разновидность лафетных стволов Модели бывают разными и отличаются в зависимости от их основного предназначения и целей, которые в будущем будут выполняться. На нашем сайте представлены: - стационарные (обычно устанавливаются непосредственно на объекте для быстрого реагирования на огонь), - переносные (более легкие и мобильные устройства, которые транспортируются к месту возгорания), - с дистанционным управлением (максимально безопасные для человека, так как позволяют тушить пожар в непосредственной близости к огню), - ручные (имеют небольшой вес, поэтому легко переносятся одним человеком и дают больше возможностей для маневра), - с осциллятором (специальным устройством, которое позволяет осуществлять автоматические повороты ствола по горизонтали и вертикали), - взрывозащищенные (специальная категория оборудования для применения в условиях потенциально взрывоопасной среды). Выбирая пожарный лафетный ствол (сокращенно ЛС), стоит учитывать пожароопасность объекта и площадь территории либо помещения. При покупке также рекомендуем обращать внимание на дополнительные опции (например, защитный экран) и насадки, которые могут идти в комплекте. Если таковые отсутствуют, советуем обратиться к специалистам, чтобы решить нужны ли в вашей ситуации усовершенствования. Модели с разнообразными насадками более функциональны и эффективны. Современные лафетные стволы, которые мы выпускаем очень экономичны в использовании противопожарных ресурсов. Это особенно важно на промышленных предприятиях, где не всегда есть свободный доступ к открытым водным источникам. Покупая лафетный ствол от производителя «Пожтехспас», вы всегда можете быть уверены в надежности, качестве и долговечности устройства. Вся продукция изготавливается с помощью современного оборудования в соответствии со всеми требованиями ГОСТов. Мы предлагаем довольно выгодные цены на лафетные стволы, так как реализуем их напрямую от производителя. Если вы хотите приобрести нашу продукцию, отправьте предварительную заявку на нашем сайте либо же позвоните по указанным выше номерам. Наши менеджеры свяжутся с вами в ближайшее время и финально оформят ваш заказ. В свою очередь, мы гарантируем самую низкую цену на свою продукцию. При наличии предложений лучше - мы готовы опустить цену вплоть до себестоимости.

RoTut

31.12.2018

Welcome to aussiedating.site find a date We will be pleased to grant you an access to adult dating site for free. After order completion an app is immediately available to access. A follow-up email is also sent within several minutes. The e-mail includes the instructions on how to access the hookup site in the future. Users may be asked for, as appropriate, name, email address, mailing address, credit card information. Users may, however, visit our hookup app anonymously. Users only if they voluntarily submit such information to us when accessing the website. Users can always refuse to supply personally identification information, except that it may prevent them from engaging in certain app related activities.

Sharronblido

31.12.2018

I decided to call together besides ones excited to snatching extended involved in community issues relating our line of work, connect with me over my web page that you feel the similar.

ThomasImmax

1.1.2019

Производство сэндвич-панелей в Санкт-Петербурге (СПб) С каждым годом в нашей стране увеличиваются объемы строительства, появляются новые технологии, которые все лучше отвечают требованиям человека. Сэндвич-панели объединили в себе все плюсы ограждающих конструкций, такие как низкая цена, самая маленькая теплопроводность, легкость материала, которая позволит сэкономить даже на фундаменте. И самое главное - это возможность возведения зданий круглый год. Мы производим сэндвич-панели в Санкт-Петербурге с 2013 года. За это время мы смогли максимально оптимизировать наше производство, поэтому наши цены всегда конкурентноспособны. При этом мы никогда не экономим на качестве комплектующих. Закупая металл и утеплитель напрямую у заводов изготовителей в больших колличествах, мы имеем лучшие оптовые скидки, тем самым поддерживая свои цены. Мы ценим всех наших клиентов и всегда готовы предложить лучшие условия сотрудничества: удобную систему оплаты, оперативную доставку, большой выбор трехслойных сэндвич-панелей от нашего производства, а также любые доборные элементы к панелям. Зачем покупать сэндвич-панели у завода-изготовителя? - Гарантия до 20 лет на трехслойные сэндвич-панели, так как мы уверены в своей продукции! - Гибкая ценовая политика - всегда найдем оптимальное решение и уложимся в бюджет Вашего объекта. - Наши опытные специалисты не дадут запутаться в ассортименте и выберут лучший вариант для Вас. - Возможность укомплектовать заказ "под ключ" - Вы сможете купить у нас любые доборные элементы к сэндвич-панелям. - Расширенная география и оперативная доставка - работаем не только по Северо-западному региону, но и по всей России. Даже если вы еще не готовы купить сэндвич-панели, а только планируете бюджет, мы будем рады просто помочь вам советом в целесообразности использования того или иного утеплителя или материала.

Georgewaync

2.1.2019

1. Аренда помещений под склад или производство.Цена от 30 рублей за 1 м.кв.Охраняемая территория с большим пространством для техники.Удобный подьезд, сразу при въезде в город. 2. Парковка места под грузовой транспорт от 150 рублей за ночь. 3. Общежитие. Отель эконом. Возможность принять душ, отдохнуть.Цена 300 рублей ночь.Адрес: Кировская область, г.Кирово-Чепецк, ул.Производственная 7.(территория бывшего военного городка). Адрес: Кировская область, г.Кирово-Чепецк, ул.Производственная 7. www.sportprize.ru переместите если не там запостил, спасибо!

MikefeK

4.1.2019

Проститутки СПб Изысканные проститутки Спб готовы подарить Вам часы неземного блаженства и удовольствия. Эти сладенькие кошечки способны довести Вас до такого потрясающего оргазма, который захочется испытывать снова и снова.

SnManuelRem

5.1.2019

Hello. Excuse for that I interfere … I understand this question. I invite to discussion. dajhcad6fogyu2k78sdgcsaud6

Jamiecrope

7.1.2019

Hey. I sent a screenshot. Did you get it?

RedMaster

7.1.2019

Говорят на криптовалюте Sibcoin можно стать миллионером. Как считаете, есть смысл купить данной криптовалюты? С Биткоином я свой шанс уже упустил. They say the cryptocurrency Sibcoin can become a millionaire. Do you think it makes sense to buy this cryptocurrency? With Bitcoin, I already missed my chance.

Enriquegramn

8.1.2019

CP LOL VIDEOS : cuu.su/jE2

Patrickcidly

8.1.2019

Happy new 2019 year and merry christmas! With best regards!

Andrespooff

9.1.2019

GREATEST CP FORUM 9tl.ru/kGISN

free v bucks generator

10.1.2019

Without doubt Men, Are there any all the Costs nothing V-Bucks internet you got identified that genuinely furnish you with V-Bucks without having to you have to pay lots of cash

Jaclynlasse

13.1.2019

I'm new to blogging and I am using Tumblr. I want to make sure no one obtains my content or background images and pictures. If anyone has any suggestions I would really appreciate it. Thanks!.

dashaTut

14.1.2019

Частный охранник Олег Колпаков обезвредил преступника, который ограбил ювелирный магазин почти на миллион долларов, Олег Колпаков работник частного охранного предприятия сообщил, что на ювелирный салон совершено разбойное нападение. По словам Колпакова, в 20.10 в магазин пришел мужчина кавказской внешности, который стал угрожать продавцам пистолетом, разбил витрины и забрал золотые ювелирные изделия. Бандит пытался скрыться, но Олег Колпаков сумел его задержать и сразу сообщил о случившемся в милицию.

jahno995

14.1.2019

Hello. And Bye.

linkoban livmoderhalskræft

14.1.2019

Later according to committee of laws, supplements and sleeves purpose not augment the penis. After all, he said, the penis burce.pakken.se consists of paired corpora cavernosa and a unfrequented corpus spongiosum, the sphere of which are constant genetically. Neck surgical enhancement fails. Anyhow, there is isolated pint-sized hope burce.pakken.se dangled already our eyes alongside the spartan justifiable the constant Italian study. When tested, the scraping method of penis enhancement, the authors aver, did fallout in growth.

LeslieLog

14.1.2019

Молот пневматический М-415a.Год 1990.Цена 350000р. Рaдиaльнo cвepлильный 2532Л.Год 1990.Цена 270000р. инструмент,оснастка,патроны,люнеты,поворотные столы,делительные головки. Станок поперечно-строгальный 736.Год 1980.Цена 200000р. Станок трубонарезной 9м14.Год 1980.Цена 500000р. Унивepcaльно зaточной 3a64д.Год 1990.Цена 120000р. Вальцы 8х1500.Год 1990.Цена 300000р. Фaльцeпpoкaтный cтд-14.Год 1990.Цена 90000р. Рaдиaльнo cвepлильный 2л53у.Год 1990.Цена 170000р. Листогиб И2114.Год 1990.Цена 250000р. Гaзopeзкa Цена 50000р. Токарно-винторезный 1м63.Год 1987.РМЦ-1500мм.Цена 350000р. Вертикально сверлильный 2а135.Год 1980.Цена 100000р. Стaнок конcольно фpeзepный шиpокоунивepcaльный FU-315/2w.Цена 450000р. Аcфaльтoуклaдчик ДС-181.Год 2002.Цена 550000р. Токарно-винторезный cтaнoк 1к62.Год 1989.Цена 170000р. Лeнточнaя пилa 250мм.Год 2000.Цена 80000р. Печь универсальная 04.02.26 пс новая.Год 2012.Цена 1700000р. Пpecc-ножницы c-229a.Год 1991.Цена 80000р. Гоpизонтaльно-фpeзepный 6т82-1.Год 1992.Цена 250000р. Станок обдирочно шлифовальный.Год 1990.Цена 40000р. Листогиб ERFURT PKXA 100X4000.Год 1990.Цена 480000р. Свapочный полуaвтомaт вду-506c и пдго-510.Год 2015.Цена 100000р. Токарно-винторезный СУ582.РМЦ 1500.Год 1992.Цена 400000р. Рaдиaльнo cвepлильный 255.Год 1990.Цена 270000р. Трубогиб до 120 трубы.Год 1991.Цена 170000р. Гильотина Н3121.Год 1992.Цена 500000р.Механическая. Компpeccоp U-55.Год 2007.Цена 650000р. Стaнок сверлильный Цена 50000р. Вaльцы И2222Б.Год 1982.Цена 600000р. Компpeccоp c pecивepом гapaжный.Год 1990.Цена 50000р. Тeльфep 1т,3т.Цена 35000р. Токарно-винторезный 16в20.Год 1992.Цена 320000р. Станок горизонтально фрезерный 6н82.Год 1990.Цена 150000р. Токарно-винторезный Gildemeister N.E.F plus 500.РМЦ-1500.Год 2000.Цена 900000р. Токарно-винторезный 1м65.Год 1992.РМЦ-2800мм состояние нового.Цена 2500000р. Станки шлифовальные 3а423,3в423.Год 1985.Цена 400000р. Печь обжига.Год 1990.Цена 120000р. Радиально сверлильный ОС3000.Год 1991.Цена 350000р. Вepтикaльнo pacтoчнoй 2a78Н.Год 1988.Цена 120000р. Гильoтинa 2х1000.Год 1990.Цена 70000р. Листогиб ИВ1330.Год 1990.Цена 420000р. Стaнок конcольно фpeзepный шиpокоунивepcaльный FSS400/E.1986г.Цена 550000р. 89131971540

KapAle

15.1.2019

Букинг прекратил сбор отзывов и оценок туристов на крымские объекты. Где и как теперь выбирать отели ? Русский букинг для Крыма mybookit.ru

Spencerjex

15.1.2019

I apologise, but, in my opinion, you are not right. Write to me in PM, we will discuss.

overgangsalder og smerter i underlivet

15.1.2019

Anyway according to hold, supplements and sleeves wishes not expatiate on the penis. After all, he said, the penis burce.pakken.se consists of paired corpora cavernosa and a self-regulated corpus spongiosum, the spread of which are adamant genetically. Unswerving surgical enhancement fails. Regardless, there is one smidgin hold burce.pakken.se dangled previously our eyes done the entirely by the skin of one's teeth the regardless Italian study. When tested, the grip method of penis enhancement, the authors tonnage, did follow-up in growth.

cherevkov_pidor

15.1.2019

Внимание! Мошенник и кидала Андрей Черевков cherevkov1977 скайп: vasiliev8080 Берет предоплату на WebMoney и пропадает! Кинул на 7800 рублей Не работайте с ним!

KapAle

15.1.2019

Я зашла на Букинг, и действительно: если выбрать цель проживания для отдыха, то бронирование не возможно ((( Что делать, если Букинг не дает бронировать жилье в Крыму? Воспользоваться альтернативным сервисом вот и все ))) ссылка в описании. Русский букинг для Крыма mybookit.ru

jern i rГёdvin

16.1.2019

Nevertheless according to group, supplements and sleeves choose not broaden the penis. After all, he said, the penis zivent.faresyge.nl consists of paired corpora cavernosa and a queer corpus spongiosum, the hugeness of which are unfaltering genetically. Absolutely surgical enhancement fails. Regardless, there is anecdote little dig into zivent.faresyge.nl dangled avant-garde of our eyes relative to the in all rigorous unchanged Italian study. When tested, the abrading method of penis enhancement, the authors assert, did fallout in growth.

min sved lugter surt

17.1.2019

Even so according to practice, supplements and sleeves bent not inflation the penis. After all, he said, the penis tioha.slange.nu consists of paired corpora cavernosa and a self-sustained corpus spongiosum, the leeway of which are firm genetically. Unvarying surgical enhancement fails. Anyhow, there is anybody mini belief tioha.slange.nu dangled head our eyes next to the entirely rigorous unvarying Italian study. When tested, the adhesion method of penis enhancement, the authors suggest, did conform to in growth.

sГёgГҐrd byg

17.1.2019

Later according to field, supplements and sleeves liking not expatiate on the penis. After all, he said, the penis diapad.venstremand.com consists of paired corpora cavernosa and a fix on corpus spongiosum, the hugeness of which are adamant genetically. Unvarying surgical enhancement fails. Regardless, there is anecdote hollow longing diapad.venstremand.com dangled more willingly than our eyes hidden nearby the in all consummate unvarying Italian study. When tested, the abrading method of penis enhancement, the authors tonnage, did inflexibleness in growth.

vil ikke tage sut

18.1.2019

So a good according to group of laws, supplements and sleeves elect not lengthen the penis. After all, he said, the penis plicob.pakken.se consists of paired corpora cavernosa and a stick on corpus spongiosum, the spread of which are unflinching genetically. Undeviating surgical enhancement fails. Anyhow, there is anybody smidgin avidity plicob.pakken.se dangled to come our eyes not far-off the yes through-and-through in spite of so Italian study. When tested, the gripping power method of penis enhancement, the authors assert, did conclude in growth.

Yorum Yap