Exemplo n.º 1
0
        public JsonNetResult  GetFranchises(int?incDisabled)
        {
            List <Franchise> _data = new List <Franchise>();

            StringBuilder sql = new StringBuilder(@"select * from Franchises C 
							    inner join Addresses Ph on C.PhysicalAddressRefId = Ph.ID"                                );

            if (!incDisabled.HasValue || incDisabled == 0)
            {
                sql.Append(" where C.IsActive = 1");
            }

            using (DBManager db = new DBManager())
            {
                _data = db.getConnection().Query <Franchise, Address, Franchise>(sql.ToString(), (fr, phys) => {
                    fr.PhysicalAddress = phys;
                    return(fr);
                }).ToList();
            }

            List <UpdateFranchisesViewModel> _editFranchises = new List <UpdateFranchisesViewModel>();

            foreach (Franchise _item in _data)
            {
                var _vm = new UpdateFranchisesViewModel();
                _vm.PopulateVM(_item);
                _editFranchises.Add(_vm);
            }
            return(new JsonNetResult()
            {
                Data = new { list = _editFranchises }, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Exemplo n.º 2
0
        public ActionResult GetFranchise(Guid?FranchiseId)
        {
            //https://msdn.microsoft.com/en-us/data/jj574232.aspx
            Franchise _franchise = null;
            UpdateFranchisesViewModel _dataItem = null;

            if (FranchiseId == null)
            {
                // create new item
                _dataItem                 = new UpdateFranchisesViewModel();
                _dataItem.Id              = Guid.NewGuid().ToString();
                _dataItem.IsNewItem       = true;
                _dataItem.PhysicalAddress = new UpdateAddressViewModel()
                {
                    Id = Guid.NewGuid().ToString(), AddressType = AddressTypeSetting.Physical
                };
                _dataItem.PhysicalAddressRefId = _dataItem.PhysicalAddress.Id;
            }
            else
            {
                string sql = @"select * from Franchises C 
							    inner join Addresses Ph on C.PhysicalAddressRefId = Ph.ID
								where C.Id = '"                                 + FranchiseId + "'";

                using (DBManager db = new DBManager())
                {
                    _franchise = db.getConnection().Query <Franchise, Address, Franchise>(sql, (clnt, phys) => {
                        clnt.PhysicalAddress = phys;
                        return(clnt);
                    }).SingleOrDefault();
                }
                if (_franchise == null)
                {
                    ModelState.AddModelError(string.Empty, $"Franchise [{FranchiseId.ToString()}] not found.  Please try again.");
                    return(JsonFormResponse());
                }

                _dataItem = new UpdateFranchisesViewModel();
                _dataItem.PopulateVM(_franchise);
                _dataItem.IsNewItem = false;
            }

            return(new JsonNetResult()
            {
                Data = new { item = _dataItem }, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Exemplo n.º 3
0
        private Franchise UpdateFranchise(Franchise _objToUpdate, UpdateFranchisesViewModel dataItem)
        {
            if (dataItem == null)
            {
                return(_objToUpdate);
            }

            if (_objToUpdate == null)
            {
                _objToUpdate = new Franchise();
            }

            _objToUpdate.BusinessPhoneNumber = dataItem.BusinessPhoneNumber;
            _objToUpdate.CodeOfConductURL    = dataItem.CodeOfConductURL;
            _objToUpdate.EmailAddress        = dataItem.EmailAddress;
            _objToUpdate.IsActive            = dataItem.IsActive;
            _objToUpdate.MasterFranchiseCode = dataItem.MasterFranchiseCode;
            _objToUpdate.MetroRegion         = dataItem.MetroRegion;
            _objToUpdate.MobileNumber        = dataItem.MobileNumber;
            _objToUpdate.Name        = dataItem.Name;
            _objToUpdate.OtherNumber = dataItem.OtherNumber;
            _objToUpdate.TradingName = dataItem.TradingName;
            _objToUpdate.Name        = dataItem.Name;

            _objToUpdate = UpdateAuditTracking(_objToUpdate);

            if (dataItem.PhysicalAddress == null)
            {
                _objToUpdate.PhysicalAddress = new Address()
                {
                    AddressType = AddressTypeSetting.Physical
                };
                _objToUpdate.PhysicalAddressRefId = _objToUpdate.PhysicalAddress.Id;
            }
            else
            {
                if (_objToUpdate.PhysicalAddress == null)
                {
                    _objToUpdate.PhysicalAddress = new Address()
                    {
                        AddressType = AddressTypeSetting.Physical
                    };
                    _objToUpdate.PhysicalAddress.Id        = dataItem.PhysicalAddress.Id;
                    _objToUpdate.PhysicalAddress.CreatedAt = _objToUpdate.CreatedAt;
                }
                _objToUpdate.PhysicalAddress.AddressLine1 = dataItem.PhysicalAddress.AddressLine1;
                _objToUpdate.PhysicalAddress.AddressLine2 = dataItem.PhysicalAddress.AddressLine2;
                _objToUpdate.PhysicalAddress.AddressLine3 = dataItem.PhysicalAddress.AddressLine3;
                _objToUpdate.PhysicalAddress.Suburb       = dataItem.PhysicalAddress.Suburb;
                _objToUpdate.PhysicalAddress.Country      = dataItem.PhysicalAddress.Country;
                _objToUpdate.PhysicalAddress.IsActive     = true;
                _objToUpdate.PhysicalAddress.PostCode     = dataItem.PhysicalAddress.PostCode;
                _objToUpdate.PhysicalAddress.State        = dataItem.PhysicalAddress.State;
                _objToUpdate.PhysicalAddress.UpdatedBy    = _objToUpdate.UpdatedBy;
                _objToUpdate.PhysicalAddress.UpdatedAt    = _objToUpdate.UpdatedAt;
                _objToUpdate.PhysicalAddress.RowVersion   = _objToUpdate.RowVersion;
                _objToUpdate.PhysicalAddressRefId         = _objToUpdate.PhysicalAddress.Id;
            }

            return(_objToUpdate);
        }
Exemplo n.º 4
0
        public ActionResult SaveFranchise(UpdateFranchisesViewModel dataItem)
        {
            //https://stackoverflow.com/questions/13541225/asp-net-mvc-how-to-display-success-confirmation-message-after-server-side-proce
            if (dataItem == null)
            {
                ModelState.AddModelError(string.Empty, "Valid franchise data not found.");
            }

            if (!dataItem.HasAnyValidAddress)
            {
                ModelState.AddModelError(string.Empty, "Please ensure at least a valid physical address is supplied.");
            }
            else
            {
                if (dataItem.PhysicalAddress != null && (dataItem.PhysicalAddress.IsPartialAddress || dataItem.HasValidPhysicalAddress))
                {
                    var _physValidator = new AddressValidator();
                    var results        = _physValidator.Validate(dataItem.PhysicalAddress);
                    results.AddToModelState(ModelState, "");
                }
            }

            if (!dataItem.HasAnyPhoneNumbers)
            {
                ModelState.AddModelError(string.Empty, "Please provide at least one valid phone number.");
            }

            if (ModelState.IsValid)
            {
                String _id    = dataItem.Id;
                var    bIsNew = (dataItem.IsNewItem);

                //https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/crud
                //https://stackoverflow.com/questions/21286538/asp-net-mvc-5-model-binding-edit-view
                //https://www.mikesdotnetting.com/article/248/mvc-5-with-ef-6-in-visual-basic-updating-related-data

                try
                {
                    Franchise _objToUpdate = null;

                    using (DBManager db = new DBManager())
                    {
                        if (bIsNew)
                        {
                            _objToUpdate = UpdateFranchise(null, dataItem);

                            StringBuilder _sql = new StringBuilder();
                            if (_objToUpdate.PhysicalAddress != null)
                            {
                                _sql.Append("Insert into Addresses (Id, CreatedAt, UpdatedAt, UpdatedBy, IsActive, RowVersion, ");
                                _sql.Append("AddressType, AddressLine1, AddressLine2, AddressLine3, Suburb, State, PostCode, Country)");
                                _sql.Append(" values (");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.Id}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.CreatedAt.FormatDatabaseDateTime()}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.UpdatedAt.FormatDatabaseDateTime()}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.UpdatedBy}',");
                                _sql.Append($"{_objToUpdate.PhysicalAddress.IsActive},");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.RowVersion.FormatDatabaseDateTime()}',");
                                _sql.Append($"{(int)_objToUpdate.PhysicalAddress.AddressType},");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.AddressLine1}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.AddressLine2}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.AddressLine3}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.Suburb}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.State}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.PostCode}',");
                                _sql.Append($"'{_objToUpdate.PhysicalAddress.Country}'");
                                _sql.Append(")");
                                db.getConnection().Execute(_sql.ToString());
                            }

                            _sql.Clear();
                            _sql.Append("Insert into Franchises (Id, CreatedAt, UpdatedAt, UpdatedBy, IsActive, RowVersion, ");
                            _sql.Append("Name, TradingName, MasterFranchiseCode, EmailAddress, PhysicalAddressRefId, ");
                            _sql.Append("BusinessPhoneNumber, MobileNumber, OtherNumber, CodeOfConductURL, ManagementFeePercentage, RoyaltyFeePercentage, MetroRegion)");
                            _sql.Append(" values (");
                            _sql.Append($"'{_objToUpdate.Id}',");
                            _sql.Append($"'{_objToUpdate.CreatedAt.FormatDatabaseDateTime()}',");
                            _sql.Append($"'{_objToUpdate.UpdatedAt.FormatDatabaseDateTime()}',");
                            _sql.Append($"'{_objToUpdate.UpdatedBy}',");
                            _sql.Append($"{_objToUpdate.IsActive},");
                            _sql.Append($"'{_objToUpdate.RowVersion.FormatDatabaseDateTime()}',");
                            _sql.Append($"'{_objToUpdate.Name}',");
                            _sql.Append($"'{_objToUpdate.TradingName}',");
                            _sql.Append($"'{_objToUpdate.MasterFranchiseCode}',");
                            _sql.Append($"'{_objToUpdate.EmailAddress}',");
                            _sql.Append($"'{_objToUpdate.PhysicalAddressRefId}',");
                            _sql.Append($"'{_objToUpdate.BusinessPhoneNumber}',");
                            _sql.Append($"'{_objToUpdate.MobileNumber}',");
                            _sql.Append($"'{_objToUpdate.OtherNumber}',");
                            _sql.Append($"'{_objToUpdate.CodeOfConductURL}',");
                            if (_objToUpdate.ManagementFeePercentage == null)
                            {
                                _sql.Append($"null,");
                            }
                            else
                            {
                                _sql.Append($"{_objToUpdate.ManagementFeePercentage},");
                            }
                            if (_objToUpdate.RoyaltyFeePercentage == null)
                            {
                                _sql.Append($"null,");
                            }
                            else
                            {
                                _sql.Append($"{_objToUpdate.RoyaltyFeePercentage},");
                            }
                            _sql.Append($"'{_objToUpdate.MetroRegion}'");
                            _sql.Append(")");
                            db.getConnection().Execute(_sql.ToString());
                            //var newId = db.Insert<Franchise>(UpdateAuditTracking(_objToUpdate));
                        }
                        else
                        {
                            string sql = @"select * from Franchises C 
							    inner join Addresses Ph on C.PhysicalAddressRefId = Ph.ID
								where C.ID = '"                                 + _id + "'";

                            _objToUpdate = db.getConnection().Query <Franchise, Address, Franchise>(sql, (clnt, phys) => {
                                clnt.PhysicalAddress = phys;
                                return(clnt);
                            }).SingleOrDefault();

                            if (_objToUpdate == null)
                            {
                                ModelState.AddModelError(string.Empty, $"Franchise [{_id.ToString()}] not found.  Please try again.");
                                return(JsonFormResponse());
                            }

                            StringBuilder _sql = new StringBuilder();
                            _objToUpdate = UpdateFranchise(_objToUpdate, dataItem);

                            _sql.Append("Update Franchises set ");
                            _sql.Append($"UpdatedAt = '{_objToUpdate.UpdatedAt.FormatDatabaseDateTime()}'");
                            _sql.Append($",RowVersion = '{_objToUpdate.RowVersion.FormatDatabaseDateTime()}'");
                            _sql.Append($",UpdatedBy = '{_objToUpdate.UpdatedBy}'");
                            _sql.Append($",IsActive = {_objToUpdate.IsActive}");
                            _sql.Append($",Name = '{_objToUpdate.Name}'");
                            _sql.Append($",TradingName = '{_objToUpdate.TradingName}'");
                            _sql.Append($",MasterFranchiseCode = '{_objToUpdate.MasterFranchiseCode}'");
                            _sql.Append($",EmailAddress = '{_objToUpdate.EmailAddress}'");
                            _sql.Append($",BusinessPhoneNumber = '{_objToUpdate.BusinessPhoneNumber}'");
                            _sql.Append($",MobileNumber = '{_objToUpdate.MobileNumber}'");
                            _sql.Append($",OtherNumber = '{_objToUpdate.OtherNumber}'");
                            _sql.Append($",CodeOfConductURL = '{_objToUpdate.CodeOfConductURL}'");
                            if (_objToUpdate.ManagementFeePercentage != null)
                            {
                                _sql.Append($",ManagementFeePercentage = {_objToUpdate.ManagementFeePercentage}");
                            }
                            if (_objToUpdate.RoyaltyFeePercentage != null)
                            {
                                _sql.Append($",RoyaltyFeePercentage = {_objToUpdate.RoyaltyFeePercentage}");
                            }
                            _sql.Append($",MetroRegion = '{_objToUpdate.MetroRegion}'");
                            _sql.Append($" where Id = '{_objToUpdate.Id}'");
                            db.getConnection().Execute(_sql.ToString());

                            _sql.Clear();
                            _sql.Append("Update Addresses set ");
                            _sql.Append($"UpdatedAt = '{_objToUpdate.UpdatedAt.FormatDatabaseDateTime()}'");
                            _sql.Append($",RowVersion = '{_objToUpdate.RowVersion.FormatDatabaseDateTime()}'");
                            _sql.Append($",UpdatedBy = '{_objToUpdate.UpdatedBy}'");
                            _sql.Append($",IsActive = {_objToUpdate.IsActive}");
                            _sql.Append($",AddressLine1 = '{_objToUpdate.PhysicalAddress.AddressLine1}'");
                            _sql.Append($",AddressLine2 = '{_objToUpdate.PhysicalAddress.AddressLine2}'");
                            _sql.Append($",AddressLine3 = '{_objToUpdate.PhysicalAddress.AddressLine3}'");
                            _sql.Append($",Suburb = '{_objToUpdate.PhysicalAddress.Suburb}'");
                            _sql.Append($",State = '{_objToUpdate.PhysicalAddress.State}'");
                            _sql.Append($",PostCode = '{_objToUpdate.PhysicalAddress.PostCode}'");
                            _sql.Append($",Country = '{_objToUpdate.PhysicalAddress.Country}'");
                            _sql.Append($" where Id = '{_objToUpdate.PhysicalAddress.Id}' ");
                            db.getConnection().Execute(_sql.ToString());
                        }

                        IAppCache cache = new CachingService();
                        cache.Remove("Active_Franchises");

                        return(JsonSuccessResponse("Franchise saved successfully", _objToUpdate));
                    }
                }
                //catch (DbUpdateConcurrencyException ex)
                //{
                //	var entry = ex.Entries.Single();
                //	var clientValues = (Franchise)entry.Entity;
                //	var databaseEntry = entry.GetDatabaseValues();
                //	if (databaseEntry == null)
                //	{
                //		ModelState.AddModelError(string.Empty, "Unable to save changes. The franchise was deleted by another user.");
                //	}
                //	else
                //	{
                //		var databaseValues = (Franchise)databaseEntry.ToObject();

                //		if (databaseValues.Name  != clientValues.Name)
                //			ModelState.AddModelError("Name", "Current database value for franchise name: " + databaseValues.Name);

                //		if (databaseValues.TradingName != clientValues.TradingName)
                //			ModelState.AddModelError("TradingName", "Current database value for trading name: " + databaseValues.TradingName);

                //		ModelState.AddModelError(string.Empty, "The record you attempted to edit "
                //			+ "was modified by another user after you got the original value. The edit operation "
                //			+ "was canceled. If you still want to edit this record, click the Save button again.");
                //	}
                //}
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, Helpers.FormatModelError("Error saving franchise", ex));

                    LogHelper log = new LogHelper();
                    log.Log(LogHelper.LogLevels.Error, "Error saving franchise", nameof(SaveFranchise), ex, dataItem, Helpers.ParseValidationErrors(ex));
                }
            }

            if (!ModelState.IsValid)
            {
                Helpers.LogFormValidationErrors(ModelState, nameof(SaveFranchise), dataItem);
            }

            return(JsonFormResponse());
        }