private Clinic MapClinicFromRM(ClinicRM clinic)
 {
     return(new Clinic()
     {
         name = clinic.Name,
         RUC = clinic.RUC,
         address = clinic.Address,
         latitude = clinic.Latitude,
         longitude = clinic.Longitude,
         phone = clinic.Phone
     });
 }
        public IHttpActionResult PostClinicProfile([FromBody] ClinicRM clinic)
        {
            if (!ModelState.IsValid || clinic == null)
            {
                return(BadRequest());
            }

            context.Connection.Open();
            using (context.Transaction = context.Connection.BeginTransaction())
            {
                try
                {
                    //  Check if user exists
                    var user = context.Users.First(u => u.idUser == clinic.UserId);
                    if (user == null)
                    {
                        context.Transaction.Rollback();
                        return(NotFound());
                    }

                    //  Insert new clinic
                    Clinic newClinic = MapClinicFromRM(clinic);
                    context.Clinics.InsertOnSubmit(newClinic);
                    context.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);

                    //  Update user table to reference the new clinic
                    user.Clinic = newClinic;
                    context.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);

                    //  If everything is OK, commit
                    context.Transaction.Commit();

                    return(Ok(newClinic));
                }
                catch (Exception e)
                {
                    //  Rollback if something goes wrong
                    context.Transaction.Rollback();
                    return(InternalServerError(e));
                }
            }
        }