Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 //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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 8
0
        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();
            }
        }
Exemplo n.º 9
0
 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);
     }
 }
Exemplo n.º 10
0
        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/
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
 internal static RecurringInvoiceWrapper Wrap(this RecurringInvoice invoice)
 {
     return(new RecurringInvoiceWrapper {
         RecurringInvoice = invoice
     });
 }
Exemplo n.º 13
0
        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);
 }
Exemplo n.º 16
0
        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
        }
Exemplo n.º 17
0
        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);
            }
        }