public ActionResult Create(DataViewModel postModel, FormCollection formValues)
        {
            DataCreateModel dataCreateModel = CreateModel(postModel, formValues,Operation.Create);
            DataViewModel model = dataCreateModel.Model;
            foreach(Field field in model.Form.Fields.Where(m => m.FieldTypeId == 11))
            {
                field.Data = Request.UserHostAddress;
            }

            if (ModelState.IsValid)
            {
                RepositoryMapguide repositoryMapGuide = new RepositoryMapguide();
                model = repositoryMapGuide.Add(model);
                dataCreateModel.Model = model;
                repositoryMapGuide.SendEmails(dataCreateModel);
                Models.View endView = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 7);
                if (endView == null)
                {
                    Models.View listUser = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 6);
                    if (listUser == null)
                    {
                        Models.View listAll = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 5);
                        if (listAll == null)
                        {
                            return View(model.View.Name, model);
                        }
                        else
                        {
                            return RedirectToAction("Index", new { id = listAll.ViewId, formId = model.Form.FormId });
                        }
                    }
                    else
                    {
                        return RedirectToAction("Index", new { id = listUser.ViewId, formId = model.Form.FormId });
                    }

                }
                else
                {
                    ViewBag.Id = model.View.ViewId;
                    model.View = endView;
                    return View(endView.Name, model);
                }
            }
            else
                return View(model.View.Name, model);
        }
        //public async Task<HttpResponseMessage> PostFormData()
        public Task<HttpResponseMessage> PostFormData()
        {
            string root = HttpContext.Current.Server.MapPath("~/App_Data");
            /*StreamWriter log1;
            string file1 = Path.Combine(@"d:\inetpub\wwwroot\rapportfrastedet\app_data\", "log1.txt");
            if (!File.Exists(file1))
            {
                log1 = new StreamWriter(file1);
            }
            else
            {
                log1 = File.AppendText(file1);
            }

            // Write to the file:
            log1.WriteLine(DateTime.Now);
            log1.WriteLine(root);

            // Close the stream:
            log1.Close();
            */
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var provider = new MultipartFormDataStreamProvider(root);

            /**/
            // Read the form data.
            //await Request.Content.ReadAsMultipartAsync(provider);
            return Request.Content.ReadAsMultipartAsync(provider).ContinueWith(data =>
            {//.Wait();

                // This illustrates how to get the file names.
                /*foreach (MultipartFileData file in provider.FileData)
                {
                    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                    Trace.WriteLine("Server file path: " + file.LocalFileName);
                }*/
                try
                {
                    HttpContextWrapper http = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
                    HttpContext.Current = http.ApplicationInstance.Context;
                    RepositorySaveData r = new RepositorySaveData();
                    DataCreateModel dataCreateModel = r.CreateModel(data.Result.FormData, data.Result.FileData, Operation.Create);
                    DataViewModel model = dataCreateModel.Model;

                    foreach (Field field in model.Form.Fields)
                    {
                        if (field.FieldTypeId == 11)
                            field.Data = http.Request.UserHostAddress;
                    }
                    RepositoryMapguide repositoryMapGuide = new RepositoryMapguide();
                    model = repositoryMapGuide.Add(model);
                    dataCreateModel.Model = model;
                    repositoryMapGuide.SendEmails(dataCreateModel);
                    return Request.CreateResponse(HttpStatusCode.OK);
                }
                catch (System.Exception e)
                {
                    StreamWriter log;
                    string file = Path.Combine(root, "log.txt");
                    if (!File.Exists(file))
                    {
                        log = new StreamWriter(file);
                    }
                    else
                    {
                        log = File.AppendText(file);
                    }

                    // Write to the file:
                    log.WriteLine(DateTime.Now);
                    log.WriteLine(e.Message);
                    log.WriteLine(e.StackTrace);

                    // Close the stream:
                    log.Close();
                    HttpResponseMessage r = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
                    System.Net.Http.Headers.MediaTypeWithQualityHeaderValue json = new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json");
                    System.Net.Http.Headers.MediaTypeWithQualityHeaderValue plain = new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("text/plain");
                    if (!Request.Headers.Accept.Contains(json))
                    {
                        r.Content.Headers.ContentType = plain;
                    }
                    return r;

                }
            });
        public ActionResult Edit(DataViewModel postModel, FormCollection formValues)
        {
            DataCreateModel dataCreateModel = CreateModel(postModel, formValues,Operation.Edit);
            DataViewModel model = dataCreateModel.Model;
            if (ModelState.IsValid)
            {
                RepositoryMapguide repositoryMapGuide = new RepositoryMapguide();
                repositoryMapGuide.Update(model);
                repositoryMapGuide.SendEmails(dataCreateModel);
                Models.View list = null;
                try
                {
                    list = model.View.Group.Views.Single(m => m.ViewTypeId == 5);
                }
                catch { }
                Models.View endView = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 7);
                if (endView == null)
                {
                    Models.View listUser = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 6);
                    if (listUser == null)
                    {
                        Models.View listAll = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 5);
                        if (listAll == null)
                        {
                            return View(model.View.Name, model);
                        }
                        else
                        {
                            return RedirectToAction("Index", new { id = listAll.ViewId, formId = model.Form.FormId });
                        }
                    }
                    else
                    {
                        return RedirectToAction("Index", new { id = listUser.ViewId, formId = model.Form.FormId });
                    }

                }
                else
                {
                    ViewBag.Id = model.View.ViewId;
                    model.View = endView;
                    return View(endView.Name, model);
                }
            }
            else
                return View(model.View.Name, model);
        }
        public ActionResult Delete(DataViewModel postModel)
        {
            RepositoryMapguide mapguide = new RepositoryMapguide();
            RepositoryViews repository = new RepositoryViews();
            Models.View view = repository.Get(postModel.View.ViewId);
            DataViewModel model = new DataViewModel
            {
                View = view,
                Form = view.Group.Forms.Single(m => m.FormId == postModel.Form.FormId),
                ItemId = postModel.ItemId,
                UniqueId = postModel.UniqueId
            };
            model = mapguide.Get(model);
            mapguide.Delete(model);
            List<DataEmailModel> emails = new List<DataEmailModel>();
            if (!String.IsNullOrEmpty(model.Form.Email)&&!String.IsNullOrEmpty(model.Form.ViewEmailToReceiverOnDelete))
            {
                emails.Add(new DataEmailModel { Email = model.Form.Email, View = model.Form.ViewEmailToReceiverOnDelete });
            }
            foreach (Field field in model.Form.Fields)
            {
                if (field.FieldTypeId == 7)
                {
                    if (!string.IsNullOrEmpty(field.Data))
                    {
                        if (email.IsMatch(field.Data))
                        {
                            string emailView = field.Form.ViewEmailToSenderOnDelete;
                            Field operationField = field.Form.Fields.FirstOrDefault(m => m.FieldTypeId == 13);
                            if (!String.IsNullOrEmpty(emailView) && operationField != null)
                            {
                                if (!String.IsNullOrEmpty(operationField.Data))
                                {
                                    if (operationField.Data == "1" || operationField.Data == "True")
                                    {
                                        emails.Add(new DataEmailModel { Email = field.Data, View = emailView });
                                    }
                                }

                            }
                        }
                    }
                }
                Selection selection = field.Selections.SingleOrDefault(m => m.Name == field.Data);
                if (selection != null && !String.IsNullOrEmpty(model.Form.ViewEmailToReceiverOnDelete))
                {

                    if (!String.IsNullOrEmpty(selection.Email))
                    {
                            emails.Add(new DataEmailModel { Email = selection.Email, View = model.Form.ViewEmailToReceiverOnDelete });
                    }
                }
            }
            DataCreateModel dcm = new DataCreateModel()
            {
                Model = model,
                Emails = emails
            };
            mapguide.SendEmails(dcm);
            Models.View endView = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 7);
            if (endView == null)
            {
                Models.View listUser = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 6);
                if (listUser == null)
                {
                    Models.View listAll = model.View.Group.Views.SingleOrDefault(m => m.ViewTypeId == 5);
                    if (listAll == null)
                    {
                        return View(model.View.Name, model);
                    }
                    else
                    {
                        return RedirectToAction("Index", new { id = listAll.ViewId, formId = model.Form.FormId });
                    }
                }
                else
                {
                    return RedirectToAction("Index", new { id = listUser.ViewId, formId = model.Form.FormId });
                }

            }
            else
            {
                return View(endView.Name, model);
            }
        }