public static BL.Project MapMvcToBusiness(MVC.Project source)
 {
     if (source == null)
     {
         return(null);
     }
     BL.Project target = BL.Project.GetOrCreate(MapSupport.ActiveCtx, source.ProjectId);
     if (target.Version != Guid.Empty && target.Version != source.ProjectVersion)
     {
         throw new DataException("Concurrency check failed");
     }
     if (source.ProjectIsDeleted)
     {
         target.Delete(MapSupport.ActiveCtx);
         return(null);
     }
     else
     {
         target.Version            = source.ProjectVersion;
         target.Name               = source.ProjectName;
         target.StatusTrackingUrl  = source.ProjectStatusTrackingUrl;
         target.TrackingUpdateTime = source.ProjectTrackingUpdateTime;
         target.StatusData         = source.ProjectStatusData;
         target.ProjectInfo        = MapProjectInfo.MapMvcToBusiness(source.ProjectInfo);
         target.ProjectStatusInfo  = MapProjectStatusInfo.MapMvcToBusiness(source.ProjectStatusInfo);
     }
     return(target);
 }
 public ActionResult Delete(Guid id, Project project)
 {
     try
     {
         BL.Project blProject = MAP.MapSupport.ActiveCtx.Project.Single(item => item.Id == id);
         MAP.MapSupport.ActiveCtx.Project.Remove(blProject);
         if(blProject.ProjectInfo != null)
             MAP.MapSupport.ActiveCtx.ProjectInfo.Remove(blProject.ProjectInfo);
         if(blProject.ProjectStatusInfo != null)
         {
             MAP.MapSupport.ActiveCtx.ProjectStatusInfo.Remove(blProject.ProjectStatusInfo);
             foreach (var ig in blProject.ProjectStatusInfo.InterestGroups)
                 MAP.MapSupport.ActiveCtx.InterestGroup.Remove(ig);
             foreach (var measurement in blProject.ProjectStatusInfo.Measurements)
                 MAP.MapSupport.ActiveCtx.ProjectMeasurement.Remove(measurement);
             foreach (var act in blProject.ProjectStatusInfo.Actions)
                 MAP.MapSupport.ActiveCtx.ProjectAction.Remove(act);
             foreach (var ca in blProject.ProjectStatusInfo.CounterActions)
                 MAP.MapSupport.ActiveCtx.CounterAction.Remove(ca);
             foreach (var cae in blProject.ProjectStatusInfo.ChallengesAndExceptions)
                 MAP.MapSupport.ActiveCtx.ProjectChallenge.Remove(cae);
             foreach (var result in blProject.ProjectStatusInfo.Results)
                 MAP.MapSupport.ActiveCtx.ProjectResult.Remove(result);
             MAP.MapSupport.ActiveCtx.Project.Remove(blProject);
         }
         MAP.MapSupport.ActiveCtx.SaveChanges();
         return RedirectToAction("Index");
     }
     catch
     {
         return View();
     }
 }
 public ActionResult Create(Project project, ProjectInfo projectInfo, ProjectStatusInfo projectStatusInfo)
 {
     try
     {
         project.ProjectInfo = projectInfo;
         project.ProjectStatusInfo = projectStatusInfo;
         BL.Project blProject = MAP.MapProject.MapMvcToBusiness(project);
         MAP.MapSupport.ActiveCtx.SaveChanges();
         return RedirectToAction("Index");
     }
     catch
     {
         return View();
     }
 }
        public static MVC.Project MapBusinessToMvc(BL.Project source)
        {
            if (source == null)
            {
                return(null);
            }
            MVC.Project target = new MVC.Project();
            target.ProjectId                 = source.Id;
            target.ProjectVersion            = source.Version;
            target.ProjectName               = source.Name;
            target.ProjectStatusTrackingUrl  = source.StatusTrackingUrl;
            target.ProjectTrackingUpdateTime = source.TrackingUpdateTime;
            target.ProjectStatusData         = source.StatusData;
            target.ProjectInfo               = MapProjectInfo.MapBusinessToMvc(source.ProjectInfo);
            target.ProjectStatusInfo         = MapProjectStatusInfo.MapBusinessToMvc(source.ProjectStatusInfo);


            return(target);
        }
        public static MVC.Project MapBusinessToMvc(BL.Project source)
        {
            if(source == null)
                    return null;
                MVC.Project target = new MVC.Project();
                    target.ProjectId = source.Id;
                target.ProjectVersion = source.Version;
                target.ProjectName = source.Name;
                target.ProjectStatusTrackingUrl = source.StatusTrackingUrl;
                target.ProjectTrackingUpdateTime = source.TrackingUpdateTime;
                target.ProjectStatusData = source.StatusData;
                            target.ProjectInfo = MapProjectInfo.MapBusinessToMvc(source.ProjectInfo);
                    target.ProjectStatusInfo = MapProjectStatusInfo.MapBusinessToMvc(source.ProjectStatusInfo);

                return target;
        }
 private ActionResult handleEditButton(string button, Project project)
 {
     if (button == "Add Action")
         project.ProjectStatusInfo.Actions.Add(new ProjectAction());
     else if (button == "Add Measurement")
         project.ProjectStatusInfo.Measurements.Add(new ProjectMeasurement());
     else if (button == "Add Interest Group")
         project.ProjectStatusInfo.InterestGroups.Add(new InterestGroup());
     else if (button == "Add Result")
         project.ProjectStatusInfo.Results.Add(new ProjectResult());
     else if (button == "Add Challenge")
         project.ProjectStatusInfo.ChallengesAndExceptions.Add(new ProjectChallenge());
     else if (button == "Add Counter Action")
         project.ProjectStatusInfo.CounterActions.Add(new CounterAction());
     else
         throw new NotImplementedException("Add button not implemented: " + button);
     return View("Edit", project);
 }
 public ActionResult Edit(Guid id, string button, Project project)
 {
     try
     {
         if (button != null && button.StartsWith("Add"))
             return handleEditButton(button, project);
         // TODO: Add update logic here
         BL.Project blProject = MAP.MapProject.MapMvcToBusiness(project);
         MAP.MapSupport.ActiveCtx.SaveChanges();
         return RedirectToAction("Index");
     }
     catch
     {
         return View();
     }
 }
 public ActionResult DelLink(Project project, Guid id)
 {
     return View("Edit");
 }