예제 #1
0
        public static FormExcelImportResult SubmitExternalFormFromExcel(byte[] result, int formId)
        {
            FormExcelImportResult importResult = new FormExcelImportResult();

            try
            {
                MemoryStream ms = new MemoryStream(result);
                DataTable    dt = ExcelHelper.GetDataTableFromXls(ms);

                Form form  = GetForm(formId);
                bool valid = true;
                //Validating
                foreach (var item in form.FormFields)
                {
                    if (!dt.Columns.Contains(item.Label))
                    {
                        valid = false;
                    }
                }

                if (!valid)
                {
                    LogHelper.LogInfo("Excel file not valid for submission.", -1);
                    importResult.Message = "Import filen är inte giltig, vänligen ladda hem mall filen och prova med den. ";
                    return(importResult);
                }

                foreach (DataRow row in dt.Rows)
                {
                    List <FormExternalSubmitValues> submitValues = new List <FormExternalSubmitValues>();

                    foreach (var item in form.FormFields)
                    {
                        submitValues.Add(new FormExternalSubmitValues()
                        {
                            FormId      = formId,
                            FormFieldId = item.Id,
                            Value       = row[item.Label].ToString(),
                            Date        = DateTime.Now
                        });
                    }

                    SubmitExternalForm(submitValues);
                    importResult.Count++;
                }

                importResult.Success = true;
            }
            catch (Exception ex)
            {
                LogHelper.LogError("Error importing excel to form. FormId: " + formId, ex, -1);
                importResult.Message = "Ett oväntat fel uppstod, vänligen försök igen.";
            }

            return(importResult);
        }
예제 #2
0
        public async Task <HttpResponseMessage> ImportExcelFile()
        {
            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

            if (!Request.Content.IsMimeMultipartContent())
            {
                response.StatusCode = HttpStatusCode.UnsupportedMediaType;
            }
            else
            {
                MultipartMemoryStreamProvider provider = new MultipartMemoryStreamProvider();
                await Request.Content.ReadAsMultipartAsync(provider);

                Task <byte[]> fileData = provider.Contents.First().ReadAsByteArrayAsync();
                int           formId   = int.Parse(((System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.Form["formId"]);

                FormExcelImportResult result = FormsBLL.SubmitExternalFormFromExcel(fileData.Result, formId);

                response.Content = new ObjectContent <FormExcelImportResult>(result, new JsonMediaTypeFormatter());
            }

            return(response);
        }