public ActionResult Create(AttributeViewModel attributeView, string returnUrl) { ActionResult action; try { if (!ModelState.IsValid) { ModelState.AddModelError("", MessageUI.ErrorMessage); return(View(attributeView)); } var attribute = Mapper.Map <AttributeViewModel, Attribute>(attributeView); _attributeService.Create(attribute); Response.Cookies.Add(new HttpCookie("system_message", string.Format(MessageUI.CreateSuccess, FormUI.Attribute))); if (!Url.IsLocalUrl(returnUrl) || returnUrl.Length <= 1 || !returnUrl.StartsWith("/") || returnUrl.StartsWith("//") || returnUrl.StartsWith("/\\")) { action = RedirectToAction("Index"); } else { action = Redirect(returnUrl); } } catch (Exception exception1) { var exception = exception1; LogText.Log(string.Concat("Attribute.Create: ", exception.Message)); return(View(attributeView)); } return(action); }
public void Run() { // Get the location of the file we are going to import from the configuration settings string fileLocation = _setup.GetSetting("InvolvementFileLocation"); // Initialize the FileHelper engine FileHelperEngine <FileFormat> engine = new FileHelperEngine <FileFormat>(); FileFormat[] result = engine.ReadFile(fileLocation); _logger.Log.Info($"{fileLocation} has been loaded."); List <AttributeDTO> attributeList = new List <AttributeDTO>(); foreach (FileFormat row in result) { AttributeDTO attributeDto = new AttributeDTO( row.ConstituentId, _translator.Translate("AttributeType", row.InvolvementCode)) // Using the ITranslator to convert CX involvement code to attribute code { AttributeDoc = row.Comment, BeginsOn = row.BeginsOn, EndsOn = row.EndsOn }; attributeList.Add(attributeDto); } if (_translator.Warnings.Any()) { string msg = "Translation errors occured in the lookup file. Please review the log file and correct before posting data."; _logger.Log.Error(msg); // Send the error message to an email address. Useful for when this is an automated process. //_email.Send( // _setup.GetSetting("SmtpTo"), // _setup.GetSetting("SmtpFrom"), // "JX.Net Example Attribute Loader Error", // msg // ); } else { // Translation is valid, so lets attempt to create the attributes by interating through the list foreach (AttributeDTO attribute in attributeList) { IList <AttributeDTO> userAttributes = _attributeService.GetAllByConstituent(attribute.ConstituentId); if (!userAttributes.ToList().Exists(x => x.AttributeType == attribute.AttributeType && x.BeginsOn == attribute.BeginsOn && x.EndsOn == attribute.EndsOn)) { try { // Use the Create method of the AttributeService to post the data to JX. AttributeDTO ret = _attributeService.Create(attribute); // The created object is returned from the Create method. here we can check if its null or not. // If it is null then there was a problem creating the Attribute. if (ret != null) { _logger.Log.Info($"Successfully Created {ret.AttributeType} Attribute for {ret.ConstituentId} "); } else { _logger.Log.Error("Failed to create attribute. Please review logs."); } } catch (MissingDataException ex) { // The MissingDataException is thrown if there are any failed validations that generated an error message and we can assume // that there was insufficient data provided to result in a valid posting of data to JX. _logger.Log.Error(ex); } } else { _logger.Log.Info("Caleb error"); } } } }