public ActionResult UploadInvoice(BaseViewModel viewModel)
        {
            int    result     = 0;
            string action     = "Upload";
            string controller = "Membership";

            try
            {
                if (Request.Form.Files.Count > 0)
                {
                    var file = Request.Form.Files[0];
                    if (file == null || file.Length == 0)
                    {
                    }
                    if (file != null)
                    {
                        string fileExtension = Path.GetExtension(file.FileName);
                        string fileName      = Path.GetFileNameWithoutExtension(file.FileName);
                        fileName = "Invoice";
                        fileName = fileName + "-" + AppGlobal.DateTimeCode + fileExtension;
                        var physicalPath = Path.Combine(_hostingEnvironment.WebRootPath, AppGlobal.FTPUploadExcel, fileName);
                        using (var stream = new FileStream(physicalPath, FileMode.Create))
                        {
                            file.CopyTo(stream);
                            FileInfo fileLocation = new FileInfo(physicalPath);
                            if (fileLocation.Length > 0)
                            {
                                if ((fileExtension == ".xlsx") || (fileExtension == ".xls"))
                                {
                                    using (ExcelPackage package = new ExcelPackage(stream))
                                    {
                                        if (package.Workbook.Worksheets.Count > 0)
                                        {
                                            ExcelWorksheet workSheet = package.Workbook.Worksheets[1];
                                            if (workSheet != null)
                                            {
                                                int totalRows = workSheet.Dimension.Rows;
                                                for (int i = 2; i <= totalRows; i++)
                                                {
                                                    Membership model = new Membership();
                                                    if (workSheet.Cells[i, 7].Value != null)
                                                    {
                                                        model.TaxCode = workSheet.Cells[i, 7].Value.ToString().Trim();
                                                        model.TaxCode = model.TaxCode.Replace(@" ", @"");
                                                        model         = _membershipRepository.GetByTaxCode(model.TaxCode);
                                                        if (model != null)
                                                        {
                                                            MembershipProperty membershipProperty = new MembershipProperty();
                                                            membershipProperty.MembershipID = model.ID;
                                                            if (workSheet.Cells[i, 1].Value != null)
                                                            {
                                                                membershipProperty.PaymentCode = workSheet.Cells[i, 1].Value.ToString().Trim();
                                                            }
                                                            if (workSheet.Cells[i, 2].Value != null)
                                                            {
                                                                membershipProperty.ProductCode = workSheet.Cells[i, 2].Value.ToString().Trim();
                                                            }
                                                            decimal valueContract = 0;
                                                            if (workSheet.Cells[i, 3].Value != null)
                                                            {
                                                                try
                                                                {
                                                                    valueContract = decimal.Parse(workSheet.Cells[i, 3].Value.ToString().Trim());
                                                                }
                                                                catch
                                                                {
                                                                }
                                                            }
                                                            membershipProperty = _membershipPropertyRepository.GetByMembershipIDAndPaymentCodeAndProductCode(membershipProperty.MembershipID.Value, membershipProperty.PaymentCode, membershipProperty.ProductCode);
                                                            if (membershipProperty == null)
                                                            {
                                                                membershipProperty = new MembershipProperty();
                                                                membershipProperty.MembershipID = model.ID;
                                                                if (workSheet.Cells[i, 1].Value != null)
                                                                {
                                                                    membershipProperty.PaymentCode = workSheet.Cells[i, 1].Value.ToString().Trim();
                                                                }
                                                                if (workSheet.Cells[i, 2].Value != null)
                                                                {
                                                                    membershipProperty.ProductCode = workSheet.Cells[i, 2].Value.ToString().Trim();
                                                                }
                                                                Config product = new Config();
                                                                if (workSheet.Cells[i, 4].Value != null)
                                                                {
                                                                    product.Title = workSheet.Cells[i, 4].Value.ToString().Trim();
                                                                    product       = _configResposistory.GetByGroupNameAndCodeAndTitle(AppGlobal.CRM, AppGlobal.Product, product.Title);
                                                                    if (product == null)
                                                                    {
                                                                        product = new Config();
                                                                        product.Initialization(InitType.Insert, RequestUserID);
                                                                        product.GroupName = AppGlobal.CRM;
                                                                        product.Code      = AppGlobal.Product;
                                                                        product.Title     = workSheet.Cells[i, 4].Value.ToString().Trim();
                                                                        _configResposistory.Create(product);
                                                                    }
                                                                    membershipProperty.ProductID = product.ID;
                                                                }

                                                                if (membershipProperty.MembershipID > 0)
                                                                {
                                                                    membershipProperty.Code          = AppGlobal.Product;
                                                                    membershipProperty.ValueContract = valueContract;
                                                                    membershipProperty.DateBegin     = DateTime.Now;
                                                                    membershipProperty.DateEnd       = DateTime.Now;
                                                                    membershipProperty.DateContract  = DateTime.Now;
                                                                    membershipProperty.Address       = model.Address;
                                                                    membershipProperty.Initialization(InitType.Insert, RequestUserID);
                                                                    _membershipPropertyRepository.Create(membershipProperty);
                                                                }
                                                            }
                                                            if (membershipProperty != null)
                                                            {
                                                                Invoice invoice = new Invoice();
                                                                invoice.ContractID = membershipProperty.ID;
                                                                invoice.Year       = viewModel.YearFinance;
                                                                invoice.Month      = viewModel.MonthFinance;
                                                                invoice            = _invoiceRepository.GetByContractIDAndYearAndMonth(invoice.ContractID.Value, invoice.Year.Value, invoice.Month.Value);
                                                                if (invoice == null)
                                                                {
                                                                    invoice            = new Invoice();
                                                                    invoice.ContractID = membershipProperty.ID;
                                                                    invoice.Year       = viewModel.YearFinance;
                                                                    invoice.Month      = viewModel.MonthFinance;
                                                                    invoice.Initialization(InitType.Insert, RequestUserID);
                                                                    invoice.ContractID  = membershipProperty.ID;
                                                                    invoice.Year        = viewModel.YearFinance;
                                                                    invoice.Month       = viewModel.MonthFinance;
                                                                    invoice.DateInvoice = new DateTime(invoice.Year.Value, invoice.Month.Value, 28);
                                                                    invoice.Total       = valueContract;
                                                                    _invoiceRepository.Create(invoice);
                                                                }
                                                                if (invoice != null)
                                                                {
                                                                    InvoiceProperty invoiceProperty = _invoicePropertyRepository.GetByInvoiceIDAndProductID(invoice.ID, membershipProperty.ProductID.Value);
                                                                    if (invoiceProperty == null)
                                                                    {
                                                                        invoiceProperty = new InvoiceProperty();
                                                                        invoiceProperty.Initialization(InitType.Insert, RequestUserID);
                                                                        invoiceProperty.InvoiceID = invoice.ID;
                                                                        invoiceProperty.ProductID = membershipProperty.ProductID;
                                                                        invoiceProperty.UnitID    = AppGlobal.UnitID;
                                                                        invoiceProperty.Quantity  = 1;
                                                                        invoiceProperty.UnitPrice = valueContract;
                                                                        invoiceProperty.Total     = invoiceProperty.Quantity * invoiceProperty.UnitPrice;
                                                                        _invoicePropertyRepository.Create(invoiceProperty);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                                result = 1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
            }
            if (result > 0)
            {
                action     = "Customer";
                controller = "Membership";
            }
            return(RedirectToAction(action, controller, new { ID = result }));
        }