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);
        }
Beispiel #2
0
        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"));
        }