internal static RecurringInvoiceList getRecurringInvoiceList(HttpResponseMessage responce) { var recInvoiceList = new RecurringInvoiceList(); var jsonObj = JsonConvert.DeserializeObject <Dictionary <string, object> >(responce.Content.ReadAsStringAsync().Result); if (jsonObj.ContainsKey("recurring_invoices")) { var recInvoiceArray = JsonConvert.DeserializeObject <List <object> >(jsonObj["recurring_invoices"].ToString()); foreach (var recInvoiceObj in recInvoiceArray) { var recInvoice = new RecurringInvoice(); recInvoice = JsonConvert.DeserializeObject <RecurringInvoice>(recInvoiceObj.ToString()); recInvoiceList.Add(recInvoice); } } if (jsonObj.ContainsKey("page_context")) { var pageContext = new PageContext(); pageContext = JsonConvert.DeserializeObject <PageContext>(jsonObj["page_context"].ToString()); recInvoiceList.page_context = pageContext; } return(recInvoiceList); }
//https://dotnettutorials.net/lesson/dependency-inversion-principle/ static void Main(string[] args) { Invoice FInvoice = new FinalInvoice(); Invoice PInvoice = new ProposedInvoice(); Invoice RInvoice = new RecurringInvoice(); double FInvoiceAmount = FInvoice.GetInvoiceDiscount(10000); double PInvoiceAmount = PInvoice.GetInvoiceDiscount(10000); double RInvoiceAmount = RInvoice.GetInvoiceDiscount(10000); }
public static RecurringInvoice Create(RecInvoiceAddModel model, string userId, int count) { var recInvoice = new RecurringInvoice { CustomerId = model.CustomerId, RecInvoiceNumber = "REC-INV" + "-" + model.RecInvoiceDate.ToString("yy") + "-" + (count + 1).ToString("000"), Tax = model.Tax, Discount = model.Discount, TotalAmount = model.TotalAmount, Remark = model.Remark, Status = Constants.InvoiceStatus.Pending, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime(), RecInvoiceDate = model.RecInvoiceDate, StrRecInvoiceDate = model.RecInvoiceDate.ToString("yyyy-MM-dd"), RecDueDate = model.RecDueDate, StrRecDueDate = model.RecDueDate.ToString("yyyy-MM-dd"), PoSoNumber = model.PoSoNumber, SubTotal = model.SubTotal, LineAmountSubTotal = model.LineAmountSubTotal, Services = model.Items.Select(x => new RecurringInvoiceService { Id = Guid.NewGuid(), ServiceId = x.ServiceId, Rate = x.Rate, Quantity = x.Quantity, Price = x.Price, TaxId = x.TaxId, TaxPercentage = x.TaxPercentage, LineAmount = x.LineAmount, TaxPrice = x.TaxPrice }).ToList() }; if (model.Attachments == null || !model.Attachments.Any()) { return(recInvoice); } foreach (var attachment in model.Attachments) { recInvoice.Attachments = new List <RecurringInvoiceAttachment> { new RecurringInvoiceAttachment { Title = attachment.Title, FileName = attachment.FileName, OriginalFileName = attachment.OriginalFileName, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime() } }; } return(recInvoice); }
static void Main(string[] args) { Invoice FInvoice = new FinalInvoice(); Invoice PInvoice = new ProposedInvoice(); Invoice RInvoice = new RecurringInvoice(); Console.WriteLine(FInvoice.GetInvoiceDiscount(10000)); Console.WriteLine(PInvoice.GetInvoiceDiscount(10000)); Console.WriteLine(RInvoice.GetInvoiceDiscount(10000)); }
internal static RecurringInvoice getRecurringInvoice(HttpResponseMessage responce) { var recInvoice = new RecurringInvoice(); var jsonObj = JsonConvert.DeserializeObject <Dictionary <string, object> >(responce.Content.ReadAsStringAsync().Result); if (jsonObj.ContainsKey("recurring_invoice")) { recInvoice = JsonConvert.DeserializeObject <RecurringInvoice>(jsonObj["recurring_invoice"].ToString()); } return(recInvoice); }
/// <summary> /// Update an existing recurring invoice. To delete a line item just remove it from the line_items list. /// </summary> /// <param name="recurring_invoice_id">The recurring_invoice_id is the identifier of the recuuring invoice.</param> /// <param name="update_info">The update_info is the RecurringInvoice object which contains the updation information.</param> /// <returns>RecurringInvoice object.</returns> public RecurringInvoice Update(string recurring_invoice_id, RecurringInvoice update_info) { var url = baseAddress + "/" + recurring_invoice_id; var json = JsonConvert.SerializeObject(update_info); var jsonstring = new Dictionary <object, object>(); jsonstring.Add("JSONString", json); var responce = ZohoHttpClient.put(url, getQueryParameters(jsonstring)); return(RecurringInvoiceParser.getRecurringInvoice(responce)); }
/// <summary> /// Create a recurring invoice for customer. /// </summary> /// <param name="new_recurring_invoice_info">The new_recurring_invoice_info is the RecurringInvoice object with recurrence_name,customer_id and recurrence_frequency as mandatory attributes.</param> /// <returns>RecurringInvoice object.</returns> public RecurringInvoice Create(RecurringInvoice new_recurring_invoice_info) { string url = baseAddress; var json = JsonConvert.SerializeObject(new_recurring_invoice_info); var jsonstring = new Dictionary <object, object>(); jsonstring.Add("JSONString", json); var responce = ZohoHttpClient.post(url, getQueryParameters(jsonstring)); return(RecurringInvoiceParser.getRecurringInvoice(responce)); }
public static void ExecuteRecurring(RecurringInvoice RecurringInvoice) { using (UnitOfWork unitOfWork = new UnitOfWork(RecurringInvoice.Session.DataLayer)) { var myCloner = new DevExpress.Persistent.Base.Cloner(); RecurringInvoice recurringInvoice = unitOfWork.FindObject <RecurringInvoice>(CriteriaOperator.Parse("Oid == ?", RecurringInvoice.Oid)); Invoice invoice = null; if (recurringInvoice.WorkFlowStatus == WorkFlowStatus.Enabled && (recurringInvoice.NextDate == null || recurringInvoice.NextDate <= MyWorkbench.BaseObjects.Constants.Constants.DateTimeTimeZone(unitOfWork))) { invoice = new Invoice(unitOfWork); recurringInvoice.CopyProperties(invoice); invoice.Party = recurringInvoice.Party; if (recurringInvoice.Items.Count >= 1) { var j = recurringInvoice.Items.Count; for (int i = 0; i < j; i++) { invoice.Items.Add(myCloner.CloneTo(recurringInvoice.Items[i], typeof(WorkflowItem)) as WorkflowItem); } } if (recurringInvoice.WorkflowResources.Count >= 1) { var j = recurringInvoice.WorkflowResources.Count; for (int i = 0; i < j; i++) { invoice.WorkflowResources.Add(myCloner.CloneTo(recurringInvoice.WorkflowResources[i], typeof(WorkflowResource)) as WorkflowResource); } } recurringInvoice.AdvanceNextDate(); // New Object Tracking (invoice as WorkflowBase).ChildItems.Add(recurringInvoice); (invoice as WorkflowBase).Tracking.Add(CreateTracking(unitOfWork, invoice, string.Format("Created from {0}", recurringInvoice.No))); //Current Object Tracking recurringInvoice.ChildItems.Add(invoice as WorkflowBase); recurringInvoice.Tracking.Add(CreateTracking(unitOfWork, invoice, string.Format("Converted to {0}", (invoice as WorkflowBase).GetType().Name))); } unitOfWork.CommitChanges(); } }
private void ProcessRecurringInvoice(RecurringInvoice RecurringInvoice) { try { if (RecurringInvoice.WorkFlowStatus == Ignyt.BusinessInterface.WorkFlow.Enum.WorkFlowStatus.Enabled) { MyWorkbench.BusinessObjects.Helpers.RecurringHelper.ExecuteRecurring(RecurringInvoice); } } catch (Exception ex) { this.TaskExceptionList.TaskExceptions.Add(ex); } }
static void Main(string[] args) { //The Dependency Inversion Principle (DIP) states that high-level modules/classes should not depend on low-level modules/classes. //Both should depend upon abstractions. Secondly, abstractions should not depend upon details. Details should depend upon abstractions. //dependency inversion principle var employee = new EmployeeBusinessLogic(); Console.WriteLine(JsonSerializer.Serialize(employee.GetEmployeeDetails(1))); //dependency inversion principle //liskov substitution principle : This principle states that, if S is a subtype of T, then objects of type T should be replaced with the objects of type S. // yerine koyma Apple apple = new Orange(); Console.WriteLine(apple.GetColor()); //after Fruit fruit = new Avocado(); Console.WriteLine(fruit.GetColor()); fruit = new Banana(); Console.WriteLine(fruit.GetColor()); //liskov substitution principle //open close principle var invoice = new Invoice(); Console.WriteLine(invoice.GetInvoiceDiscount(1000, InvoiceType.FinalInvoice)); Console.WriteLine(invoice.GetInvoiceDiscount(1000, InvoiceType.ProposedInvoice)); //after InvoiceOCP fInvoice = new FinalInvoice(); InvoiceOCP pInvoice = new ProposedInvoice(); InvoiceOCP rInvoice = new RecurringInvoice(); Console.WriteLine(fInvoice.GetInvoiceDiscount(100)); Console.WriteLine(pInvoice.GetInvoiceDiscount(100)); Console.WriteLine(rInvoice.GetInvoiceDiscount(100)); //open close principle Console.Read(); /* * * Single Responsibility : Sınıflarımızın iyi tanımlanmış tek bir sorumluluğu olmalı. * Open/Closed : Sınıflarımız değişikliğe kapalı ancak yeni davranışların eklenmesine açık olmalı. * Liskov Substitution(yerine koyma) : Kodumuzda herhangi bir değişiklik yapmaya gerek kalmadan türetilmiş sınıfları (sub class) türedikleri ata sınıfın (base class) yerine kullanabilmeliyiz. * Interface Segregation : Genel kullanım amaçlı tek bir kontrat yerine daha özelleşmiş birden çok kontrat oluşturmayı tercih etmeliyiz. * Dependency Inversion : Katmanlı mimarilerde üst seviye modüller alt seviyedeki modüllere doğruda bağımlı olmamalıdır. * */ // https://dotnettutorials.net/lesson/dependency-inversion-principle/ }
static void Main(string[] args) { try { var service = new ZohoBooks(); service.initialize("{authtoken}", "{organization id}"); RecurringInvoicesApi recinvapi = service.GetRecurringInvoicesApi(); var paramets = new Dictionary <object, object>(); paramets.Add("recurrence_name_contains", "r"); var recinvcs = recinvapi.GetRecurringInvoices(paramets); if (recinvcs != null) { foreach (var x in recinvcs) { Console.WriteLine("{0},{1},{2}", x.recurrence_name, x.recurring_invoice_id, x.created_time); } } var recinvId = recinvcs[0].recurring_invoice_id; var recinv = recinvapi.Get(recinvId); var customerId = recinv.customer_id; var templateId = recinv.template_id; var itemId = recinv.line_items[0].item_id; if (recinv != null) { Console.WriteLine("{0},{1},{2}", recinv.recurrence_name, recinv.recurring_invoice_id, recinv.created_time); } var newRecurInv = new RecurringInvoice() { recurrence_name = "Premium2", customer_id = customerId, contact_persons = new List <string> { }, template_id = templateId, start_date = "2013-10-03", end_date = "2014-11-04", recurrence_frequency = "months", repeat_every = 1, payment_terms = 15, payment_terms_label = "Net 15", exchange_rate = 1.00, payment_options = new PaymentOptions() { payment_gateways = new List <PaymentGateway>() { } }, discount = 0.00, is_discount_before_tax = true, discount_type = "item_level", allow_partial_payments = true, line_items = new List <LineItem> { new LineItem() { item_id = itemId, name = "Premium Pla", description = "10 GB Space, 300 GB Transfer 100 Email Accounts 10 MySQL Databases", item_order = 1, quantity = 1.00, unit = "Nos", discount = "10.60%", }, }, notes = "Thanks for your business.", terms = "", salesperson_name = "John Michael", shipping_charge = 10.00, adjustment = 2.00, adjustment_description = "Adjustment" }; var createdrecinv = recinvapi.Create(newRecurInv); if (createdrecinv != null) { Console.WriteLine("{0},{1},{2}", createdrecinv.recurrence_name, createdrecinv.recurring_invoice_id, createdrecinv.created_time); } var updatInfo = new RecurringInvoice() { recurrence_name = "rec name", template_id = templateId, start_date = "2013-10-03", end_date = "2013-11-04", recurrence_frequency = "months", repeat_every = 1, payment_terms = 15, discount = 2.00, is_discount_before_tax = false, discount_type = "item_level", allow_partial_payments = true, salesperson_name = "", }; var updatedinfo = recinvapi.Update(recinvId, updatInfo); if (updatedinfo != null) { Console.WriteLine("{0},{1},{2}", updatedinfo.recurrence_name, updatedinfo.recurring_invoice_id, updatedinfo.created_time); } var delresp = recinvapi.Delete(recinvcs[2].recurring_invoice_id); Console.WriteLine(delresp); var stopres = recinvapi.Stop(recinvId); Console.WriteLine(stopres); var resumeres = recinvapi.Resume(recinvId); Console.WriteLine(resumeres); var templatechang = recinvapi.UpdateTemplate(recinvId, templateId); Console.WriteLine(templatechang); var comments = recinvapi.GetComments(recinvId); if (comments != null) { foreach (var comment in comments) { Console.WriteLine("{0},{1},{2}", comment.comment_id, comment.description, comment.commented_by_id); } } } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadKey(); }
internal static RecurringInvoiceWrapper Wrap(this RecurringInvoice invoice) { return(new RecurringInvoiceWrapper { RecurringInvoice = invoice }); }
public static Task <RecurringInvoice> GetRecurringInvoiceAsync(this FreeAgentClient client, RecurringInvoice recurringInvoice) { var id = client.ExtractId(recurringInvoice); return(client.GetRecurringInvoiceAsync(id)); }
public void Edit(RecurringInvoice entity) { _dataContext.RecurringInvoice.Update(entity); }
public async Task AddAsync(RecurringInvoice entity) { await _dataContext.RecurringInvoice.AddAsync(entity); }
static void Main(string[] args) { #region Single Responsible Principle Console.WriteLine("\n#-------------SR: Single Responsible Principle Violation---------------#\n"); SOLID_Principle.SRP.Violation.UserService userService = new SOLID_Principle.SRP.Violation.UserService(); userService.Register("*****@*****.**", "1234"); userService.ValidateEmail("*****@*****.**"); userService.SendEmail("*****@*****.**"); Console.WriteLine("\n#-------------SR: Single Responsible Principle Implement---------------#\n"); SOLID_Principle.SRP.Implementation.EmailService emailService = new SOLID_Principle.SRP.Implementation.EmailService(); emailService.ValidateEmail("*****@*****.**"); emailService.SendEmail("*****@*****.**"); SOLID_Principle.SRP.Implementation.UserService userService1 = new SOLID_Principle.SRP.Implementation.UserService(emailService); userService1.Register("*****@*****.**", "1234"); #endregion #region Open Close Principle Console.WriteLine("\n#-------------OC:Open Close Principle Violation---------------#\n"); SOLID_Principle.OCP.Violation.Invoice invoice = new SOLID_Principle.OCP.Violation.Invoice(); Console.WriteLine(invoice.GetInvoiceDiscount(10000, SOLID_Principle.OCP.Violation.InvoiceType.ProposedInvoice)); Console.WriteLine("\n#-------------OC:Open Close Principle Implement---------------#\n"); Invoice FInvoice = new FinalInvoice(); Invoice PInvoice = new ProposedInvoice(); Invoice RInvoice = new RecurringInvoice(); double FInvoiceAmount = FInvoice.GetInvoiceDiscount(10000); double PInvoiceAmount = PInvoice.GetInvoiceDiscount(10000); double RInvoiceAmount = RInvoice.GetInvoiceDiscount(10000); Console.WriteLine(PInvoiceAmount); #endregion #region Liscov Substiution Principle Console.WriteLine("\n#-------------LS:Liscov Substiution Principle Violation---------------#\n"); SOLID_Principle.LSP.Violation.Apple apple = new SOLID_Principle.LSP.Violation.Orange(); Console.WriteLine("I am an apple object of {0} color", apple.GetColor()); Console.WriteLine("\n#-------------LS:Liscov Substiution Principle Implementation---------------#\n"); SOLID_Principle.LSP.Implementation.Fruit fruit = new SOLID_Principle.LSP.Implementation.Orange(); Console.WriteLine(fruit.GetColor()); fruit = new SOLID_Principle.LSP.Implementation.Apple(); Console.WriteLine(fruit.GetColor()); #endregion #region Interface Segregation Console.WriteLine("\n#-------------IS:Interface Segregation Violation---------------#\n"); SOLID_Principle.ISP.Violation.HPLaserJetPrinter laserJetPrinter = new SOLID_Principle.ISP.Violation.HPLaserJetPrinter(); laserJetPrinter.PrintDuplex(""); SOLID_Principle.ISP.Violation.LiquidInkjetPrinter liquidInkjetPrinter = new SOLID_Principle.ISP.Violation.LiquidInkjetPrinter(); liquidInkjetPrinter.PrintDuplex(""); Console.WriteLine("\n#-------------IS:Interface Segregation Implement---------------#\n"); SOLID_Principle.ISP.Implementation.HPLaserJetPrinter laserJetPrinter1 = new SOLID_Principle.ISP.Implementation.HPLaserJetPrinter(); laserJetPrinter1.PrintDuplex(""); SOLID_Principle.ISP.Implementation.LiquidInkjetPrinter liquidInkjetPrinter1 = new SOLID_Principle.ISP.Implementation.LiquidInkjetPrinter(); liquidInkjetPrinter1.Print(""); #endregion #region Dependency Inversion Console.WriteLine("\n#-------------DI:Dependency Inversion Violation---------------#\n"); SOLID_Principle.DIP.Violation.EmployeeBusinessLogic obj = new SOLID_Principle.DIP.Violation.EmployeeBusinessLogic(); var result = obj.GetEmployeeDetails(1); Console.WriteLine($"Id:{result.ID},\nName:{result.Name},\nDepartment:{result.Department},\nSalary:{result.Salary}"); Console.WriteLine("\n#-------------DI:Dependency Inversion Implement---------------#\n"); SOLID_Principle.DIP.Implementation.EmployeeBusinessLogic obj1 = new SOLID_Principle.DIP.Implementation.EmployeeBusinessLogic(); var result1 = obj.GetEmployeeDetails(1); Console.WriteLine($"Id:{result1.ID},\nName:{result1.Name},\nDepartment:{result1.Department},\nSalary:{result1.Salary}"); #endregion }
public static void EditInvoice(RecInvoiceEditModel model, RecurringInvoice entity, string userId) { entity.CustomerId = model.CustomerId; entity.Tax = model.Tax; entity.Discount = model.Discount; entity.TotalAmount = model.TotalAmount; entity.Remark = model.Remark; entity.UpdatedBy = userId ?? "0"; entity.UpdatedOn = Utility.GetDateTime(); entity.RecInvoiceDate = model.RecInvoiceDate; entity.StrRecInvoiceDate = model.RecInvoiceDate.ToString("yyyy-MM-dd"); entity.RecDueDate = model.RecDueDate; entity.StrRecDueDate = model.RecDueDate.ToString("yyyy-MM-dd"); entity.PoSoNumber = model.PoSoNumber; entity.SubTotal = model.SubTotal; entity.LineAmountSubTotal = model.LineAmountSubTotal; //int[] arr = new int[100]; ArrayList tempArr = new ArrayList(); //for (int i=0;i<model.Items.Count; i++) //{ // arr[i] = model.Items[i].ServiceId; //} foreach (var item in model.Items) { tempArr.Add(item.ServiceId); var alreadyExistServices = entity.Services.Where(x => item.ServiceId == x.ServiceId).FirstOrDefault(); //entity.Services.Where(x => item.ServiceId == x.ServiceId).Select(c => { c.CreditLimit = 1000; return c; }); if (alreadyExistServices != null) { alreadyExistServices.Price = item.Price; alreadyExistServices.TaxId = item.TaxId; alreadyExistServices.TaxPercentage = item.TaxPercentage; alreadyExistServices.Rate = item.Rate; alreadyExistServices.Quantity = item.Quantity; alreadyExistServices.TaxPrice = item.TaxPrice; alreadyExistServices.LineAmount = item.LineAmount; entity.Services.Add(alreadyExistServices); } } var deletedServices = entity.Services.Where(x => !tempArr.Contains(x.ServiceId)).ToList(); //var resultAll = items.Where(i => filter.All(x => i.Features.Any(f => x == f.Id))); foreach (var deletedService in deletedServices) { entity.Services.Remove(deletedService); } var addedServices = model.Items .Where(x => !entity.Services.Select(y => y.ServiceId).Contains(x.ServiceId)) .ToList(); foreach (var service in addedServices) { entity.Services.Add(new RecurringInvoiceService { Id = Guid.NewGuid(), ServiceId = service.ServiceId, Rate = service.Rate, TaxId = service.TaxId, Price = service.Price, Quantity = service.Quantity, TaxPercentage = service.TaxPercentage, TaxPrice = service.TaxPrice }); } if (model.Attachments == null || !model.Attachments.Any()) { return; } var deletedAttachemntFiles = entity.Attachments.Select(x => x.FileName) .Except(model.Attachments.Select(y => y.FileName)).ToList(); foreach (var deletedAttachemntFile in deletedAttachemntFiles) { var attachemnt = entity.Attachments.Single(x => x.FileName.Equals(deletedAttachemntFile)); entity.Attachments.Remove(attachemnt); } foreach (var attachment in model.Attachments) { var recInvoiceAttachment = entity.Attachments.SingleOrDefault(x => x.FileName.Equals(attachment.FileName)); if (recInvoiceAttachment == null) { recInvoiceAttachment = new RecurringInvoiceAttachment { Title = attachment.Title, FileName = attachment.FileName, OriginalFileName = attachment.OriginalFileName, CreatedBy = userId ?? "0", CreatedOn = Utility.GetDateTime() }; } else { recInvoiceAttachment.Title = attachment.Title; recInvoiceAttachment.FileName = attachment.FileName; recInvoiceAttachment.OriginalFileName = attachment.OriginalFileName; } entity.Attachments.Add(recInvoiceAttachment); } }