public ResponseMessageModel DoSave(FranchiseCoverageModel franchiseCoverage, string userId)
        {
            var response = new ResponseMessageModel {HasError = true, Title = "Guardar información"};

            if (string.IsNullOrWhiteSpace(franchiseCoverage.LastConfig))
            {
                response.Message = "Error en la red o en el navegador, por favor reinicie su navegador e intente de nuevo.";
                return response;
            }

            if (string.IsNullOrWhiteSpace(franchiseCoverage.Stores))
            {
                response.Message = "No existe información definida para generar las coberturas de la franquicia";
                return response;
            }

            var lstFranchiseCoverage = ExtractCoverages(franchiseCoverage, response);
            if (response.HasError)
                return response;

            using (var repository = new FranchiseRepository())
            {
                using (var transaction = repository.Db.Database.BeginTransaction())
                {
                    if (repository.AnyFranchiseById(franchiseCoverage.Id) == false)
                    {
                        response.Message = "No se ha encontrado la Franquicia o ésta ya fue eliminada";
                        return response;
                    }

                    var lastCoverage = repository.GetFranchiseCoverageById(franchiseCoverage.Id);

                    if(lastCoverage != null)
                        repository.BackupFranchiseCoverageById(lastCoverage);

                    repository.SaveFranchiseCoverage(franchiseCoverage, lastCoverage, userId, lstFranchiseCoverage);

                    transaction.Commit();
                }
            }

            response.Message = "La información fue almacenada de forma correcta";
            response.HasError = false;
            return response;
        }