public ActionResult UpdateInvocation(int?id)
 {
     try
     {
         using (var db = new StoreContext())
         {
             //Find invocation record and set nondatabase InvocationTemplate model
             this.OrganizeViewBugs(db);
             Invocation invocation = db.Invocations.Find(id);
             var        item       = new InvocationTemplate();
             item.InvocationId        = invocation.InvocationId;
             item.FirstName           = invocation.FirstName;
             item.LastName            = invocation.LastName;
             item.PatronymicName      = invocation.PatronymicName;
             item.BirthDate           = invocation.BirthDate;
             item.ResidentMail        = invocation.ResidentMail;
             item.RegionId            = invocation.RegionId;
             item.CommunityId         = invocation.CommunityId;
             item.Street              = invocation.Street;
             item.Home                = invocation.Home;
             item.Room                = invocation.Room;
             item.InvocationPurposeId = invocation.InvocationPurposeId;
             item.OrganizationId      = invocation.OrganizationId;
             return(View("InvocationTemplate", item));
         }
     }
     catch (Exception ex)
     {
         return(HttpNotFound(ex.Message));
     }
 }
 public ActionResult CreateInvocation()
 {
     try
     {
         using (var db = new StoreContext())
         {
             this.OrganizeViewBugs(db);
             var item = new InvocationTemplate();
             item.InvocationId = 0;
             return(View("InvocationTemplate", item));
         }
     }
     catch (Exception ex)
     {
         return(HttpNotFound(ex.Message));
     }
 }
        public ActionResult SaveInvocation(InvocationTemplate invocationTemplate)
        {
            try
            {
                using (var db = new StoreContext())
                {
                    Invocation invocation;
                    if (invocationTemplate.InvocationId == 0)
                    {
                        invocation = new Invocation();
                        invocation.InvocationId        = invocationTemplate.InvocationId;
                        invocation.FirstName           = invocationTemplate.FirstName;
                        invocation.LastName            = invocationTemplate.LastName;
                        invocation.PatronymicName      = invocationTemplate.PatronymicName;
                        invocation.BirthDate           = invocationTemplate.BirthDate;
                        invocation.ResidentMail        = invocationTemplate.ResidentMail;
                        invocation.RegionId            = invocationTemplate.RegionId;
                        invocation.CommunityId         = invocationTemplate.CommunityId;
                        invocation.Street              = invocationTemplate.Street;
                        invocation.Home                = invocationTemplate.Home;
                        invocation.Room                = invocationTemplate.Room;
                        invocation.InvocationPurposeId = invocationTemplate.InvocationPurposeId;
                        invocation.OrganizationId      = invocationTemplate.OrganizationId;

                        // Nonvisible fields
                        invocation.InvocationDate   = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single();
                        invocation.InitiationTypeId = 3;
                        invocation.Id      = userId;
                        invocation.LogDate = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single();

                        db.Invocations.Add(invocation);
                    }
                    else
                    {
                        invocation = db.Invocations.Find(invocationTemplate.InvocationId);
                        invocation.InvocationId        = invocationTemplate.InvocationId;
                        invocation.FirstName           = invocationTemplate.FirstName;
                        invocation.LastName            = invocationTemplate.LastName;
                        invocation.PatronymicName      = invocationTemplate.PatronymicName;
                        invocation.BirthDate           = invocationTemplate.BirthDate;
                        invocation.ResidentMail        = invocationTemplate.ResidentMail;
                        invocation.RegionId            = invocationTemplate.RegionId;
                        invocation.CommunityId         = invocationTemplate.CommunityId;
                        invocation.Street              = invocationTemplate.Street;
                        invocation.Home                = invocationTemplate.Home;
                        invocation.Room                = invocationTemplate.Room;
                        invocation.InvocationPurposeId = invocationTemplate.InvocationPurposeId;
                        invocation.OrganizationId      = invocationTemplate.OrganizationId;

                        // Nonvisible fields
                        invocation.InvocationDate   = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single();
                        invocation.InitiationDate   = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single();
                        invocation.InitiationTypeId = 3;
                        invocation.Id      = userId;
                        invocation.LogDate = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single();

                        db.Invocations.Attach(invocation);
                        db.Entry(invocation).State = EntityState.Modified;
                    }
                    db.SaveChanges();

                    //Create folder to store Invocation related files
                    string path = Server.MapPath("~/FileStorage/Invocation/" + invocation.InvocationId.ToString());
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    return(this.Json(new { statuscode = 1, message = "" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Invocation", "SaveInvocation")));
            }
        }