public bool RegisterProduct(Guid userId, string langCode, RegisterProductData data, out Guid?deviceId, out string errMsg) { const string cmdText = "cli.CustomerDeviceAdd"; deviceId = null; errMsg = null; using var db = new SqlConnection(m_connStr); var cmd = db.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = cmdText; cmd.AddCustomerIdParam(userId); cmd.AddLangCodeParam(langCode); var pErrMsg = cmd.AddErrorMessageParam(); var pRetVal = cmd.AddRetvalParam(); cmd.Parameters.AddWithValue(PrmBrandId, data.BrandId); cmd.Parameters.AddWithValue(PrmEquipmentTypeId, data.EquipmentTypeId); cmd.Parameters.AddWithValue(PrmModel, data.Model); cmd.Parameters.AddWithNullableValue(PrmSerial, data.Serial); cmd.Parameters.AddWithNullableValue(PrmDateSale, data.DateSale); cmd.Parameters.AddWithNullableValue(PrmComment, data.Comment); var prmDeviceId = cmd.Parameters.Add(PrmDeviceId, SqlDbType.UniqueIdentifier); prmDeviceId.Direction = ParameterDirection.Output; db.Open(); cmd.ExecuteNonQuery(); var rc = (int)pRetVal.Value; if (rc != 0) { errMsg = pErrMsg.Value != null?pErrMsg.Value.ToString() : string.Empty; return(false); } deviceId = (Guid)prmDeviceId.Value; return(true); }
public IActionResult RegisterProduct_Submit(RegisterProductData data, List <IFormFile> files) { if (!ModelState.IsValid) { return(View(ViewRegisterProduct, data)); } if (data == null) { ModelState.AddModelError(string.Empty, @DbRes.T("RegisterProductDataNotFound_Msg", ResourceSet)); return(View(ViewRegisterProduct)); } if (data.DocumentTypeId == null && files.Count > 0) { ModelState.AddModelError(string.Empty, @DbRes.T("DocumentTypeUndefined_Msg", ResourceSet)); return(View(ViewRegisterProduct, data)); } // сохраняем устройство var langCode = Request.LanguageCulture(); var succ = m_repo.RegisterProduct(m_userId, langCode, data, out Guid? deviceId, out var errMsg); if (!succ || deviceId == null) { ModelState.AddModelError(string.Empty, errMsg); return(View(ViewRegisterProduct, data)); } // добавляем файлы // docUploadFiles - имя элемента формы if (files != null) { foreach (var file in files) { var fileName = System.Text.Encodings.Web.HtmlEncoder.Default.Encode(Path.GetFileName(file.FileName)); var fileExt = Path.GetExtension(file.FileName).Replace(".", string.Empty, StringComparison.Ordinal); if (!m_allowedFileTypes.Contains(fileExt, StringComparer.InvariantCultureIgnoreCase)) { return(Content(string.Format(DbRes.T("NotAllowedFileType", ResourceSetCommonText), System.Text.Encodings.Web.HtmlEncoder.Default.Encode(fileExt)))); } byte[] bytes; using (var stream = new MemoryStream()) { file.CopyTo(stream); bytes = stream.ToArray(); } if (bytes.Length == 0) { return(Content($"Upload empty file: {fileName}")); } bool uploaded = m_repo.DeviceBlobAdd(m_userId, deviceId.Value, langCode, (DbDefines.DocumentType)data.DocumentTypeId, fileName, fileExt, bytes, out errMsg); if (!uploaded) { return(Content(string.Format(DbRes.T("FileUploadError", ResourceSetCommonText), errMsg))); } } } // переадресация на страницу устройств клиента и показ подтверждения регистрации TempData["DeviceRegistered"] = "1"; return(RedirectToAction("Products")); }